制作测试数据的代码
import pandas as pd
dftest = pd.DataFrame({'Amt': {0: 60, 1: 35.0, 2: 30.0, 3: np.nan, 4: 25},
'Year': {0: 2012.0, 1: 2012.0, 2: 2012.0, 3: 2013.0, 4: 2013.0},
'Name': {0: 'A', 1: 'A', 2: 'C', 3: 'A', 4: 'B'}})
给予
Amt Name Year
0 60 A 2012.0
1 35.0 A 2012.0
2 30.0 C 2012.0
3 NaN A 2013.0
4 25 B 2013.0
Amt
列最多有 2 个值对应于组 ['Name', 'Year']
。我想旋转/转置使得输出的形式为
Name Year Amt1 Amt2
0 A 2012 35 60
2 C 2012 30 NaN
3 A 2013 NaN NaN
4 B 2013 25 NaN
我尝试过使用 pivot、unstack、pivot_table
我真正想做的是确保每个 ['Name', 'Year']
有两个 Amt
值(NA
没问题),我可以通过堆叠所需的输出来实现
最佳答案
使用 groupby
和 apply
f = lambda x: x.sort_values(ascending=True).reset_index(drop=True)
dftest.groupby(['Name', 'Year']).Amt.apply(f).unstack()
关于python - Pandas 按组转置数字列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40091996/