熊猫:将两列重塑成一行

时间:2018-02-25 19:54:27

标签: python pandas pivot

我想将一个pandas DataFrame从两列重塑为一行:

import numpy as np
import pandas as pd
df_a = pd.DataFrame({ 'Type': ['A', 'B', 'C', 'D', 'E'], 'Values':[2,4,7,9,3]})
df_a

   Type Values
0   A   2
1   B   4
2   C   7
3   D   9
4   E   3

df_b = df_a.pivot(columns='Type', values='Values')
df_b

这给了我这个:

Type A       B       C       D      E
0   2.0     NaN     NaN     NaN     NaN
1   NaN     4.0     NaN     NaN     NaN
2   NaN     NaN     7.0     NaN     NaN
3   NaN     NaN     NaN     9.0     NaN
4   NaN     NaN     NaN     NaN     3.0

当我想将它压缩成如下一行时:

Type A       B       C       D      E
0   2.0     4.0     7.0     9.0     3.0

3 个答案:

答案 0 :(得分:0)

我相信你不需要pivot,更好的是DataFrame构造函数:

df_b = pd.DataFrame([df_a['Values'].values], columns=df_a['Type'].values)
print (df_b)
   A  B  C  D  E
0  2  4  7  9  3

set_index转置T

df_b = df_a.set_index('Type').T.rename({'Values':0})
print (df_b)
Type  A  B  C  D  E
0     2  4  7  9  3

答案 1 :(得分:0)

另一种方式:

df_a['col'] = 0
df_a.set_index(['col','Type'])['Values'].unstack().reset_index().drop('col', axis=1)

Type    A   B   C   D   E
  0     2   4   7   9   3

答案 2 :(得分:0)

我们可以修复你的df_b

df_b.ffill().iloc[[-1],:]
Out[360]: 
Type    A    B    C    D    E
4     2.0  4.0  7.0  9.0  3.0

或者我们

df_a.assign(key=[0]*len(df_a)).pivot(columns='Type', values='Values',index='key')
Out[366]: 
Type  A  B  C  D  E
key                
0     2  4  7  9  3