我想将数据框列转换为行
A B C D E F
--------------------
1 a x 11 k 9
2 b y 22 j 10
3 c z 33 h 11
4 d p 44 g 12
5 e q 55 f 13
在上面的示例数据框中,我想转换为
B D E 1 2 3 4 5 M1 M2 M3 M4 M5
-------------------------------------------------
a 11 k x y z p q 9 10 11 12 13
b 12 j y z p q 9 10 11 12 13
c 13 h z p q 9 10 11 12 13
d 14 g p q 9 10 11 12 13
e 15 f q 9 10 11 12 13
在这里我首先要做的是将列A的值转换为新数据帧的标题(即新数据帧中的1,2,3,4,5)。然后我将C列中的值放在header(1,2,3,4,5)中的value中,然后在数据中创建一个新列(M1,M2,M3,M4,M5)并填充Value新DataFarme的每一列中F列的值。
我尝试使用数据透视表进行操作,然后创建了多索引数据框,而且我也无法左右移动。因此请帮助我解决此问题。
New Data Frame image
最佳答案
如果熊猫为0.24+,请先将Series.shift
与fill_value
一起使用,然后通过F
列和DataFrame.join
原始创建新的DataFrame:
for i, x in enumerate(df.C):
df[i+1] = df.C.shift(-i, fill_value='')
#pandas below
#df[i+1] = df.C.shift(-i).fillna('')
df1 = pd.DataFrame([df.pop('F').tolist()],
index=df.index,
columns=[f'M{x+1}' for x in range(len(df))])
df = df.drop('C', axis=1).join(df1)
print (df)
A B D E 1 2 3 4 5 M1 M2 M3 M4 M5
0 1 a 11 k x y z p q 9 10 11 12 13
1 2 b 22 j y z p q 9 10 11 12 13
2 3 c 33 h z p q 9 10 11 12 13
3 4 d 44 g p q 9 10 11 12 13
4 5 e 55 f q 9 10 11 12 13
关于python - 将行重塑为数据框的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60138225/