如何将字典列表分隔为单独的列?

2024-06-16 13:18:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我的dataframe列中有一个不同长度的字典列表:

categories

1) [  { "S" : "Vibes" },  { "S" : "Themed" },  { "S" : "Experiences" },  { "S" : "Girls Night" }]
2) [  { "S" : "Vibes" }]
3) [  { "S" : "Vibes" },  { "S" : "Drinks" }]
.
.
.

我想将其分成单独的列,如果特定列表中没有字典,则应将其作为该类别的空值,因为输出应如下所示:

categories 1          categories 2         categories 3  ......

{ "S" : "Vibes" }     { "S" : "Themed" }    { "S" : "Themed" }
{ "S" : "Vibes" }]      null                   null
.                         .                     .
.                         .                     .

Tags: dataframe列表字典nullcategories空值nightgirls
1条回答
网友
1楼 · 发布于 2024-06-16 13:18:09

您可以使用^{}将列categories中的dict列表扩展为单独的行,然后通过使用^{}对原始行索引(分解前的行索引)进行分组来创建类别名称(“类别1”、“类别2”等),并通过^{}在组中获取序列号。最后,我们使用^{}将行透视到列中

df1 = df.explode('categories')
df1['Cat_Num'] = 'categories ' + df1.groupby(level=0).cumcount().add(1).astype(str)
df2 = df1.pivot(columns='Cat_Num', values='categories').rename_axis(columns=None)

演示

data = {'categories': [
[{ "S" : "Vibes" },  { "S" : "Themed" },  { "S" : "Experiences" },  { "S" : "Girls Night" }],
[  { "S" : "Vibes" }],
[  { "S" : "Vibes" },  { "S" : "Drinks" }]
]}
df = pd.DataFrame(data)

df1 = df.explode('categories')
df1['Cat_Num'] = 'categories ' + df1.groupby(level=0).cumcount().add(1).astype(str)
df2 = df1.pivot(columns='Cat_Num', values='categories').rename_axis(columns=None)

print(df2)



     categories 1     categories 2          categories 3          categories 4
0  {'S': 'Vibes'}  {'S': 'Themed'}  {'S': 'Experiences'}  {'S': 'Girls Night'}
1  {'S': 'Vibes'}              NaN                   NaN                   NaN
2  {'S': 'Vibes'}  {'S': 'Drinks'}                   NaN                   NaN

相关问题 更多 >