简体   繁体   English

pandas DataFrame仅对一列进行转置/融化/透视

[英]pandas DataFrame transpose/melt/pivot for one column only

I have data like this in a pandas DataFrame: 我在pandas DataFrame中有这样的数据:

数据1

And I would like to transform it to this (in a pandas DataFrame): 我想将其转换为此(在pandas DataFrame中):

数据结果

I tried to use df.melt(), df.pivot(), and df.T() but it didn't work out for me since they transformed all the columns... Anyone knows how to fix this (using something else than pd Dataframe is also fine, I have my data in a csv file)? 我尝试使用df.melt(),df.pivot()和df.T(),但由于对所有列进行了转换,因此对我来说不起作用...任何人都知道如何解决此问题(使用其他方法)比pd Dataframe还可以,我将数据保存在一个csv文件中)?

I think you can use pivot with fillna : 我认为您可以在fillna使用pivot fillna

print (df)
  name group  weight
0    a     e      60
1    t     g      70
2    p     d      80
3    f     d      40
4    e     e      50
5    l     g      30
6    a     d      20

print (df.pivot(index='name', columns='group', values='weight').fillna(''))
group   d   e   g
name             
a      20  60    
e          50    
f      40        
l              30
p      80        
t              70

您可以使用以下一行代码来做到这一点:

df.set_index(['name','group']).unstack()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM