[英]Converting list containing other lists and dictionaries into a pandas dataframe
[英]Converting Python Dict containing list of lists into pandas Dataframe
我有以下代碼:
names = ['Tom', 'Dick', 'Harry']
marriageDates = ['02-02-1958', '08-07-1969', ['01-21-1973','07-14-1981']]
people = {
"Name": names,
"Marriage Date(s)": marriageDates
}
df = pd.DataFrame(people)
print(df)
這使:
Name Marriage Date(s)
0 Tom 02-02-1958
1 Dick 08-07-1969
2 Harry [01-21-1973, 07-14-1981]
但是,我希望 output 為:
Name 1st Marriage Date 2nd Marriage Date
0 Tom 02-02-1958
1 Dick 08-07-1969
2 Harry 01-21-1973 07-14-1981
換句話說,我的字典中的一個鍵是列表列表。 而不是該鍵填充條目是列表的列(如第一個表中的最后一行),我希望將該列表的第 n 個元素放置在新的相鄰列中(如第二個表中)。 有沒有辦法做到這一點?
你可以試試這個: -
import pandas as pd
ordinal = lambda n: "%d%s" % (n,"tsnrhtdd"[(n/10%10!=1)*(n%10<4)*n%10::4])
names = ['Tom', 'Dick', 'Harry']
marriageDates = ['02-02-1958', '08-07-1969', ['01-21-1973','07-14-1981']]
people = {
"Name": names,
"Marriage Date(s)": marriageDates
}
df = pd.DataFrame(people)
marriage_date_df = df['Marriage Date(s)'].apply(pd.Series)
marriage_date_df = marriage_date_df.rename(columns = lambda x : ordinal(x+1)+' Marriage Date')
result_df = pd.concat([df[["Name"]], marriage_date_df[:]], axis=1)
result_df
它給出了 output:-
Name 1st Marriage Date 2nd Marriage Date
0 Tom 02-02-1958 NaN
1 Dick 08-07-1969 NaN
2 Harry 01-21-1973 07-14-1981
希望這可以幫助!!
有一種非常簡單的方法可以做到這一點。 我最近也發現了它。
df2 = df['Marriage Date(s)'].apply(pd.Series)
pd.concat([df[['Name']], df2], axis=1).rename(columns={0:'1st Marriage Date',1:'2st Marriage Date'})
Name 1st Marriage Date 2st Marriage Date
0 Tom 02-02-1958 NaN
1 Dick 08-07-1969 NaN
2 Harry 01-21-1973 07-14-1981
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.