如何获取包含行中所有数据的日志文件并将其转换为基于列的输出?

时间:2018-06-14 17:40:49

标签: python python-2.7 pandas dataframe pandas-groupby

目前我有一个如下所示的日志文件:

 PS       V       I       P
PSX1    1.802   .006    .011
PSX4    1.113   .179    .199
PSX2    1.111   .036    .041
PSX3    1.095   .003    .046

PSX1    1.802   .007    .014
PSX4    1.114   .180    .201
PSX2    1.111   .038    .041
PSX3    1.096   .003    .005

我希望在通过脚本

之后将其更改为它的样子
   PSX1         PSX2         PSX3        PSX4
V   I   P    V   I   P    V   I   P    V   I   P
#   #   #    #   #   #    #   #   #    #   #   #
#   #   #    #   #   #    #   #   #    #   #   #
.   .   .    .   .   .    .   .   .    .   .   . 
.   .   .    .   .   .    .   .   .    .   .   . 

我一直在使用pandas搞乱数据框架,我不确定如何实现这一点,或者甚至可以做到这一点。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用cumcount创建新的索引键,然后我们unstack并使用swaplevel + sort_index

调整列级别
df=df.assign(newindex=df.groupby('PS').cumcount())
df.set_index(['newindex','PS']).unstack().swaplevel(0,1,axis=1).sort_index(level=0,axis=1)
Out[91]: 
PS         PSX1                 PSX2                 PSX3                \
              I      P      V      I      P      V      I      P      V   
newindex                                                                  
0         0.006  0.011  1.802  0.036  0.041  1.111  0.003  0.046  1.095   
1         0.007  0.014  1.802  0.038  0.041  1.111  0.003  0.005  1.096   
PS         PSX4                
              I      P      V  
newindex                       
0         0.179  0.199  1.113  
1         0.180  0.201  1.114