使用数据透视表 pandas 排序 [英] Sort with pivot table pandas

查看:32
本文介绍了使用数据透视表 pandas 排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据框,我想对其重新排序.但是我无法获得所需的表格形式

I Have a data frame and I want to reorder it. But I could not get desired form of my table

df =

id_easy     latitude    longitude
1           45.0714     7.6187
1           45.0739     7.6195
3           45.0745     7.6152
3           45.0833     7.6145
2           45.0946     7.6194

所需的输出:

1       2       3   
45.0714 7.6187  45.0946 7.6194  45.0745     7.6152
45.0739 7.6195                  45.0946     7.6194

我试过了:

df_pivot = pd.pivot_table(df,columns = ['id_easy'], values = ['longitude','latitude'])

推荐答案

您可以使用 GroupBy.cumcount 用于计数器,然后是 pivot,也用于展平 MultiIndex 使用 f-strings:

You can use GroupBy.cumcount for counter and then pivot, also for flatten MultiIndex use f-strings:

df['g'] = df.groupby('id_easy').cumcount()

df = (df.pivot(index='g', columns='id_easy', values=['longitude','latitude'])
        .sort_index(axis=1, level=1))
df.columns = [f'{a}_{b}' for a, b in df.columns]
print (df)
   latitude_1  longitude_1  latitude_2  longitude_2  latitude_3  longitude_3
g                                                                           
0     45.0714       7.6187     45.0946       7.6194     45.0745       7.6152
1     45.0739       7.6195         NaN          NaN     45.0833       7.6145

或者将 set_indexunstack 一起使用(也适用于较旧的 Pandas 版本):

Or use set_index with unstack (working also with oldier pandas versions):

df['g'] = df.groupby('id_easy').cumcount()

df = df.set_index(['g','id_easy']).unstack().sort_index(axis=1, level=1)
df.columns = [f'{a}_{b}' for a, b in df.columns]
print (df)
   latitude_1  longitude_1  latitude_2  longitude_2  latitude_3  longitude_3
g                                                                           
0     45.0714       7.6187     45.0946       7.6194     45.0745       7.6152
1     45.0739       7.6195         NaN          NaN     45.0833       7.6145

这篇关于使用数据透视表 pandas 排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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