如何在数据框架中透视一列到多列?



我有一个类型为:

的数据框架
a = ['a','b','c','a','b','c','a','b','c']
b = [0,1,2,3,4,5,6,7,8]
df = pd.DataFrame({'key':a,'values':b})
key  values
0   a       0
1   b       1
2   c       2
3   a       3
4   b       4
5   c       5
6   a       6
7   b       7
8   c       8

我想移动"values"中的值列转换为具有相同"键"的新列。

所以结果:

key  values0  values1  values2
0   a        0        3        6
1   b        1        4        7
2   c        2        5        8

从这个问题我如何pivot一个数据框架?我试过:

a=d1.pivot_table(index='key',values='values',aggfunc=list).squeeze()
pd.DataFrame(a.tolist(),index=a.index) 

,

0  1  2
key         
a    0  3  6
b    1  4  7
c    2  5  8

但是我不希望索引是'key',我希望索引保持不变。

您可以使用reset_index

a = df.pivot_table(index='key',values='values',aggfunc=list).squeeze()
out = pd.DataFrame(a.tolist(),index=a.index).add_prefix('values').reset_index()
print(out)
# Output
key  values0  values1  values2
0   a        0        3        6
1   b        1        4        7
2   c        2        5        8

另一种方法:

out = (df.pivot_table('values', 'key', df.index // 3)
.add_prefix('values').reset_index())
print(out)
# Output
key  values0  values1  values2
0   a        0        3        6
1   b        1        4        7
2   c        2        5        8
df["id"] = df.groupby("key").cumcount()
df.pivot(columns="id", index="key").reset_index()
#    key values      
# id          0  1  2
# 0    a      0  3  6
# 1    b      1  4  7
# 2    c      2  5  8

相关内容

  • 没有找到相关文章

最新更新