我有一个像这样的数据框:

df1 = pd.DataFrame({
               'testName':   [4402, 4402 ,5555,6753,1234,9876,3602],
               'endResult': ['WARNING', 'WARNING', 'FAILED', 'FAILED','WARNING','FAILED','WARNING'],
               })


我想实现这一目标:

df = pd.DataFrame({
    'testName':[4402, 4402 ,5555,6753,1234,9876,3602],
    'WARNING':[4402,4402,0,0,1234,0,3602],
    'FAILED':[0,0,5555,6753,0,9876,0]
})


我该怎么做?

最佳答案

使用pivot,如下所示:

df = (df1.reset_index()
         .pivot('index', 'endResult', 'testName')
         .fillna(0, downcast='infer')
print(df)
endResult  FAILED  WARNING
index
0               0     4402
1               0     4402
2            5555        0
3            6753        0
4               0     1234
5            9876        0
6               0     3602


或者,在最后一级使用set_indexMultiIndex.from_arraysunstack

idx = pd.MultiIndex.from_arrays([df1.index, df1.endResult, ])
df = df1.set_index(idx).testName.unstack(fill_value=0)

print(df)
endResult  FAILED  WARNING
0               0     4402
1               0     4402
2            5555        0
3            6753        0
4               0     1234
5            9876        0
6               0     3602




摆脱索引而
(1)印刷

print(df.to_string(index=False))
FAILED  WARNING
     0     4402
     0     4402
  5555        0
  6753        0
     0     1234
  9876        0
     0     3602


(2)保存为CSV

df.to_csv('data.csv', index=False)

关于python - 如何根据值(value)在 Pandas 中拆分一列并创建新列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53235546/

10-10 04:29