gpt4 book ai didi

python - 在 Pandas 列中拆分字典/列表并转换为新数据框

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:45 27 4
gpt4 key购买 nike

我有数据保存在 Excel 中。我正在使用 Python2.7 查询这些数据并将其转换为 Pandas DataFrame。我的数据框中有一列名为“类别”的列。其中有一个值的字典(或列表?)。数据框如下所示:

[1] df
ID CATEGORY
1 {60: 'SHOES'}
2 {46: 'HARDWARE'}
3 {60: 'SHOES'}
4 {219: 'GOVERNMENT OFFICE'}
5 {87: 'ARCADES',60: 'SHOES'}

我需要将此列拆分为单独的列,以便 DataFrame 看起来像这样:

[2] df2
CATEGORY_ID CATEGORY_NAME
60 SHOES
46 HARDWARE
219 GOVERNMENT OFFICE
87 ARCADES

我需要在数据框中添加一个新列

[3] df
ID CATEGORY_id
1 60
2 46
3 60
4 219
5 87,60

任何人请帮我解决这个问题..

最佳答案

我认为你需要:

<小时/>
import ast
df = (pd.DataFrame(df['CATEGORY'].apply(ast.literal_eval).values.tolist())
.stack()
.reset_index(level=0, drop=True)
.reset_index()
.drop_duplicates()
.rename(columns={'index':'CATEGORY_ID', 0:'CATEGORY_NAME'}))
print (df)
CATEGORY_ID CATEGORY_NAME
0 60 SHOES
1 46 HARDWARE
3 219 GOVERNMENT OFFICE
5 87 ARCADES

编辑:解决方案有点简单,要加入重复的CATEGORY_ID,请使用groupbyjoin:

import ast
df = (pd.DataFrame(df['CATEGORY'].apply(ast.literal_eval).values.tolist(), index=df['ID'])
.stack()
.reset_index()
.rename(columns={'level_1':'CATEGORY_ID', 0:'CATEGORY_NAME'})
)
print (df)
ID CATEGORY_ID CATEGORY_NAME
0 1 60 SHOES
1 2 46 HARDWARE
2 3 60 SHOES
3 4 219 GOVERNMENT OFFICE
4 5 60 SHOES
5 5 87 ARCADES


df1 = df.groupby('ID')['CATEGORY_ID'].apply(lambda x: ', '.join(x.astype(str))).reset_index()
print (df1)
ID CATEGORY_ID
0 1 60
1 2 46
2 3 60
3 4 219
4 5 60, 87

关于python - 在 Pandas 列中拆分字典/列表并转换为新数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49335168/

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