簡體   English   中英

將包含列表列表的 Python 字典轉換為 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM