使用数据透视表 pandas 排序 [英] Sort with pivot table pandas
本文介绍了使用数据透视表 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-string
s:
You can use GroupBy.cumcount
for counter and then pivot
, also for flatten MultiIndex
use f-string
s:
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_index
与 unstack
一起使用(也适用于较旧的 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屋!
查看全文