我目前有一个看起来像这样的数据框
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)
答案 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])