我对pandas有点陌生,我正在尝试执行一些表操作。我不太清楚我要找的行动是怎么回事。
我有一只熊猫的资料(实际的更大,但这些是我需要转换的科尔:
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我怎样才能做到这一点?
发布于 2018-02-01 20:14:21
您可以重新创建dataframe:
从当前的dataframe创建新列
cols = [name+'_{}'.format(num // len(df.columns)) for num,name in enumerate(df.columns.tolist()*len(df))]通过对原始数据from中的所有值进行扁平化来创建一个新的数据from
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 发布于 2018-02-01 20:21:42
使用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 https://stackoverflow.com/questions/48570585
复制相似问题