gpt4 book ai didi

python - 使用 python pandas 将具有多行的 python 数据框转换为一行?

转载 作者:太空狗 更新时间:2023-10-30 00:53:47 25 4
gpt4 key购买 nike

具有以下数据框,

df = pd.DataFrame({'device_id' : ['0','0','1','1','2','2'],
'p_food' : [0.2,0.1,0.3,0.5,0.1,0.7],
'p_phone' : [0.8,0.9,0.7,0.5,0.9,0.3]
})
print(df)

输出:

  device_id  p_food  p_phone
0 0 0.2 0.8
1 0 0.1 0.9
2 1 0.3 0.7
3 1 0.5 0.5
4 2 0.1 0.9
5 2 0.7 0.3

如何实现这种转变?

df2 = pd.DataFrame({'device_id' : ['0','1','2'],
'p_food_1' : [0.2,0.3,0.1],
'p_food_2' : [0.1,0.5,0.7],
'p_phone_1' : [0.8,0.7,0.9],
'p_phone_2' : [0.9,0.5,0.3]
})
print(df2)

输出:

  device_id  p_food_1  p_food_2  p_phone_1  p_phone_2
0 0 0.2 0.1 0.8 0.9
1 1 0.3 0.5 0.7 0.5
2 2 0.1 0.7 0.9 0.3

我尝试使用 groupby、apply、agg...
但是我仍然无法实现这种转变。

更新
我的最终代码:

df.drop_duplicates('device_id', keep='first').merge(df.drop_duplicates('device_id', keep='last'),on='device_id')

感谢 su79eu7kA-Za-z 付出的时间和精力。
言语不足以表达我的感激之情。

最佳答案

如果您仍在使用 groupby 寻找答案

df = df.groupby('device_id')['p_food', 'p_phone'].apply(lambda x: pd.DataFrame(x.values)).unstack().reset_index()
df.columns = df.columns.droplevel()
df.columns = ['device_id','p_food_1', 'p_food_2', 'p_phone_1','p_phone_2']

你得到

    device_id   p_food_1    p_food_2    p_phone_1   p_phone_2
0 0 0.2 0.1 0.8 0.9
1 1 0.3 0.5 0.7 0.5
2 2 0.1 0.7 0.9 0.3

关于python - 使用 python pandas 将具有多行的 python 数据框转换为一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43729268/

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