我需要将pandas数据框中的多行(最多10行)合并为一行。
例如: 我有这样的数据框
a b
0 1 3
1 2 4
转换为
a_0 b_0 a_1 b_1
0 1 3 2 4
逐行合并是愚蠢的,但我不知道如何进行。
答案 0 :(得分:4)
将DataFrame.stack
用于MultiIndex Series
,转换为一行DataFrame并最后展平MultiIndex
:
df = df.stack().to_frame().T
df.columns = df.columns.map(lambda x: f'{x[1]}_{x[0]}')
print (df)
a_0 b_0 a_1 b_1
0 1 3 2 4
或者如果所有值都是数字,请将numpy.ravel
与itertools.product
一起使用:
from itertools import product
c = [f'{x[0]}_{x[1]}' for x in product(df.columns, df.index)]
df = pd.DataFrame([df.to_numpy().ravel()], columns=c)
print (df)
a_0 a_1 b_0 b_1
0 1 3 2 4