Python 如何根据值拆分熊猫中的一列并创建新列?
我有这样一个数据框:Python 如何根据值拆分熊猫中的一列并创建新列?,python,pandas,dataframe,pivot,Python,Pandas,Dataframe,Pivot,我有这样一个数据框: df1 = pd.DataFrame({ 'testName': [4402, 4402 ,5555,6753,1234,9876,3602], 'endResult': ['WARNING', 'WARNING', 'FAILED', 'FAILED','WARNING','FAILED','WARNING'], }) df = (df1.reset_index()
df1 = pd.DataFrame({
'testName': [4402, 4402 ,5555,6753,1234,9876,3602],
'endResult': ['WARNING', 'WARNING', 'FAILED', 'FAILED','WARNING','FAILED','WARNING'],
})
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
我想做到这一点:
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]
})
我该怎么做?像这样使用:
df1 = pd.DataFrame({
'testName': [4402, 4402 ,5555,6753,1234,9876,3602],
'endResult': ['WARNING', 'WARNING', 'FAILED', 'FAILED','WARNING','FAILED','WARNING'],
})
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
或者,在最后一级使用和
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)
以下是如何解决这个问题:
df1 = pd.DataFrame({
'testName': [4402, 4402, 5555, 6753, 1234, 9876, 3602],
'endResult': ['WARNING', 'WARNING', 'FAILED', 'FAILED', 'WARNING', 'FAILED',
'WARNING'],
})
df = df1.where(df1["endResult"] == "FAILED").dropna()
df = df.rename(index=str, columns={"endResult": "FAILED"})
d_f = df1.where(df1["endResult"] == "WARNING").dropna()
d_f = d_f.rename(index=str, columns={"endResult": "WARNING"})
df = df.append(d_f)
df= df.fillna(0)
使用unique()和where()解决该问题,方法是:
在那之后我如何删除索引,以便只剩下失败和警告?