gpt4 book ai didi

python - 如何使用 pd.melt 转换数据框

转载 作者:行者123 更新时间:2023-12-05 03:22:48 26 4
gpt4 key购买 nike

例如这是我的数据框

df = pd.DataFrame([['Bob', 'lunch', 70], 
['Bob', 'dinner', 160],
['Sara', 'lunch', 150],
['Sara', 'dinner', 220]],
columns=['Name', 'Meal', 'Cost'])
   Name    Meal  Cost
0 Bob lunch 70
1 Bob dinner 160
2 Sara lunch 150
3 Sara dinner 220

如何使用 pd.melt 或任何其他方式将数据帧转换为以下内容?

   Name   Meal_1  Cost_1   Meal_2  Cost_2
0 Bob lunch 70 dinner 160
1 Sara lunch 150 dinner 220

最佳答案

a) 这看起来更像是 pivot() 而不是 melt() 的工作。

df.pivot(index=['Name'], columns=['Meal'], values=['Cost'])

结果是一个数据透视表:

       Cost
Meal dinner lunch
Name
Bob 160 70
Sara 220 150

不完全是您想要的,但也许更好。

b) 备选方案:宽表

     Meal_1  Cost_1  Meal_2  Cost_2
Name
Bob lunch 70 dinner 160
Sara lunch 150 dinner 220

...你可以用这样的代码得到:

df = df.set_index('Name')
lunch = df.loc[df.Meal.eq('lunch')]
dinner = df.loc[df.Meal.eq('dinner')]
df = pd.concat([lunch, dinner], axis=1)
df.columns = ['Meal_1', 'Cost_1', 'Meal_2', 'Cost_2']

关于python - 如何使用 pd.melt 转换数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72628294/

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