gpt4 book ai didi

python - 将数据框的行 reshape 为列

转载 作者:行者123 更新时间:2023-12-01 00:03:36 26 4
gpt4 key购买 nike

我想将 Dataframe 列转换为行

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) 的值中,然后在数据中创建一个新列 (M1, M2, M3, M4, M5) 并填充值新 DataFarme 的每列中的列 F 值。

我尝试使用数据透视表,然后创建多索引数据框,并且左移和右移我无法执行。所以请帮助我解决这个问题。

New Data Frame image

最佳答案

使用Series.shift如果 pandas 0.24+ 首先使用 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 - 将数据框的行 reshape 为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60138225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com