在一列的数据框中添加空格?

时间:2018-06-21 12:44:05

标签: python python-2.7 pandas

我目前有一个看起来像这样的数据框

  Temp1       Temp2         Pattern         Errors
 307.858K    303.197K         F0's            0
 297.960K    282.329K         F1's            0
   277K       260K             CA             0
   262K       238K             C5             0
   228K       168K         DATA==ADDR         0
   192K       140K            PRBS            0
   197K       77K             F0's            0
  199.9K     77.3K            F1's            0
  199K       773K              CA             0
                               C5             0
                           DATA==ADDR         0
                              PRBS            0
                              F0's            0
                              F1's            0
                               CA             0
                               C5             0
                           DATA==ADDR         0
                              PRBS            0
                              F0's            0 
                              F1's            0
                               CA             0
                               C5             0
                           DATA==ADDR         0
                              PRBS            0
                               .              . 
                               .              .
                               .              .

预期输出表

  Temp1       Temp2         Pattern         Errors
                              F0's            0
                              F1's            0
                               CA             0
                               C5             0
                          DATA==ADDR          0
                              PRBS            0
 307.858K    303.197K         F0's            0
                              F1's            0
                               CA             0
                               C5             0
                           DATA==ADDR         0
                              PRBS            0
 297.960K    282.329K         F0's            0
                              F1's            0
                               CA             0
                               C5             0
                           DATA==ADDR         0
                              PRBS            0
   277K       260K            F0's            0 
                              F1's            0
                               CA             0
                               C5             0
                           DATA==ADDR         0
                              PRBS            0
   262K       238K             .              . 
                               .              .
                               .              .

我想将其更改为将温度列拆分为每个部分都有一个值的位置。即。前两个温度值对应于从第二个F0到PRBS的值,然后后两个2个温度值对应于下一组6个模式。我认为最好的方法是在每个条目之前添加6个空格,但是我不知道这是否是最好的方法,如果确实如此,我不确定如何解决这个问题,任何帮助将不胜感激。

编辑: 通过串联3个我之前通过日志文件解析创建的不同数据帧来创建此数据帧。

results = pd.concat([tempFrame, patternFrame, errorsFrame], axis = 1, sort = False)

tempFrame包含前2列,patternFrame包含Pattern列,errorsframe包含Errors列。

tempFrame:

 tempFrame = tempFrame.assign(newIndex = tempFrame.groupby('Extra').cumcount())
 tempFrame= tempFrame.set_index(['newIndex', 'Extra']).unstack().swaplevel(0, axis = 1).sort_index(axis = 1, level = 0)

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码的一些变体以生成预期的输出。假设您将df作为数据框。

#fetch the initial temp1
temp1 = df['Temp1'].iloc[:df.shape[0]/6]
#OR
temp1 = df['Temp1'].iloc[:(df.shape[0]/6 - 1)]
#create an numpy array of first 6 empty strings followed by array of (temp,'','','','','')
df['Temp1'] = np.hstack([np.full(6,'',dtype='S20')]+[np.append(tmp,np.full(5,'',dtype='S20')) for tmp in temp1])
temp2 = df['Temp2'].iloc[:df.shape[0]/6]
#OR
temp2 = df['Temp2'].iloc[:(df.shape[0]/6 - 1)]
df['Temp2'] = np.hstack([np.full(6,'',dtype='S20')]+[np.append(tmp,np.full(5,'',dtype='S20')) for tmp in temp2])