首页 > 解决方案 > 将包含列表列表的 Python Dict 转换为 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]

但是,我希望输出为:

    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 个元素放置在新的相邻列中(如第二个表中)。有没有办法做到这一点?

标签: pythonpandasdataframe

解决方案


有一种非常简单的方法可以做到这一点。我最近也发现了它。

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

推荐阅读