gpt4 book ai didi

python - 将 pandas 列中的字典转换为数据框

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:22 24 4
gpt4 key购买 nike

我有一个 Dataframe 看起来像这样:

    cus_id          cat_counts
0 4462 {'LOUNGE': 2}
1 5482 {'MAJOR APPLIANCES': 2, 'SMALL APPLIANCES': 1}
2 8101 {'BEDDING': 1, 'MAJOR APPLIANCES': 1}
3 3388 {'MAJOR APPLIANCES': 1, 'BEDROOM SUITES': 1}
5 3030 {'ACCESSORIES': 1, 'VISUAL': 2, 'MAJOR APPLIANCES' : 2}
6 8942 {'VISUAL': 1, 'AUDIO': 1, 'BEDDING': 1}
7 5775 {'ACCESSORIES': 2, 'VISUAL': 1}
8 5489 {'ACCESSORIES': 1, 'KITCHENWARE': 1, 'BEDDING' : 1
9 9370 {'ACCESSORIES': 1, 'VISUAL': 2, 'MAJOR APPLIANCES' : 5}
10 5936 {'KITCHENWARE': 1, 'ACCESSORIES': 4, 'VISUAL': 3}
11 3854 {'ACCESSORIES': 1, 'VISUAL': 2}
12 4016 {'LOOSE CARPETING': 1, 'BEDDING': 1}
13 3503 {'HOME OFFICE': 2}

我想将 cat_counts 列转换为连接到主数据框的单独列,其中 key 是列,value s 是列中的计数。这是一个示例(一些列已被省略):

    cus_id         LOUNGE | MAJOR APPLIANCES | SMALL APPLIANCES | BEDDING | BEDROOM SUITES | ACCESSORIES
0 4462 2 0 0 0 0 0
1 5482 0 2 1 0 0 0
2 8101 0 1 0 1 0 0
3 3388 0 1 0 0 1 0
5 3030 0 2 0 0 0 1
6 8942 0 0 0 1 0 0
7 5775 0 0 0 0 0 2
8 5489 0 0 0 1 0 1
9 9370 0 5 0 0 0 1
10 5936 0 0 0 0 0 4
11 3854 0 0 0 0 0 1
12 4016 0 0 0 1 0 0
13 3503 0 0 0 0 0 0

我已经尝试过 df['cat_counts'].apply(lambda a: pd.DataFrame.from_dict(a)) 但我收到错误如果使用所有标量值,则必须传递一个索引。我检查过这个问题 Transform a Counter object into a Pandas DataFrame & turning a collections counter into dictionary但他们没有回答我的问题。我不知道这是否可能。我所知道的是你可以从字典中创建一个 Dataframe。如果有关于此的 stackoverflow 帖子,请指出正确的方向

最佳答案

如果性能不重要,将每个字典转换为 Series 并将缺失值替换为 0:

df['cat_counts'].apply(lambda a: pd.Series(a)).fillna(0)

为了提高性能,将列转换为 DataFrame:

pd.DataFrame(df['cat_counts'].tolist()).fillna(0)

全部与DataFrame.pop一起用于提取列和 DataFrame.join添加原始列:

df1 = df.join(pd.DataFrame(df.pop('cat_counts').tolist()).fillna(0).astype(int))

关于python - 将 pandas 列中的字典转换为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59016003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com