我有一个像这样的数据框:
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_index
和MultiIndex.from_arrays
的unstack
。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/