使用python pandas将多行的python数据帧转换为一行? [英] Convert a python dataframe with multiple rows into one row using python pandas?

查看:47
本文介绍了使用python pandas将多行的python数据帧转换为一行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有以下数据框,

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...
但我仍然无法实现这种转变.

I try to achieve it use groupby,apply,agg...
But I still can't achieve this transformation.

更新
我的最终代码:

Update
My final Code:

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

我感谢 su79eu7kA-Za-z 的时间和努力.
言语不足以表达我的感激之情.

I appreciated su79eu7k's and A-Za-z's time and effort.
Words are not enough to express my gratitude.

推荐答案

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

If you are still looking for an answer using 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 pandas将多行的python数据帧转换为一行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆