我是pandas
的新手,我试图执行一些表操作。我不确定如何调用我正在寻找的动作。
我有一个pandas数据帧(实际的数据帧更大,但这些是我需要转换的cols:
pr10 pr50 pr90
25.6214 30.2753 36.634
1.94509 3.84798 6.55111
0 0 0.00835
0 0 0.007279
我想将其转换为:
pr10_0 pr50_0 pr90_0 pr10_1 pr50_1 pr90_1 pr10_2 pr50_2 pr90_2 pr10_3 pr50_3 pr90_3 pr10_4 pr50_4 pr90_4
25.6214 30.2753 36.634 1.94509 3.84798 6.55111 0 0 0.00835 0 0 0.007279 0.003505 0.007009 0.014764
我该如何实现?
答案 0 :(得分:1)
使用stack
并加入多重索引
df1=df.stack().to_frame(0).T
df1.columns=df1.columns.map('{0[1]}_{0[0]}'.format)
df1
Out[445]:
pr10_0 pr50_0 pr90_0 pr10_1 pr50_1 pr90_1 pr10_2 pr50_2 \
0 25.6214 30.2753 36.634 1.94509 3.84798 6.55111 0.0 0.0
pr90_2 pr10_3 pr50_3 pr90_3
0 0.00835 0.0 0.0 0.007279
答案 1 :(得分:0)
您可以重新创建数据框:
从当前数据框
创建新列cols = [name+'_{}'.format(num // len(df.columns)) for num,name in enumerate(df.columns.tolist()*len(df))]
通过展平原始数据框中的所有值来创建新数据框
pd.DataFrame(df.values.reshape(1,-1),columns=cols)
pr10_0 pr50_0 pr90_0 pr10_1 pr50_1 pr90_1 pr10_2 pr50_2 \
0 25.6214 30.2753 36.634 1.94509 3.84798 6.55111 0.0 0.0
pr90_2 pr10_3 pr50_3 pr90_3
0 0.00835 0.0 0.0 0.007279