我有一個包含 a_x、b_x、c_x、d_x、a_z、b_z、c_z、d_z 列的資料集
df=pd.DataFrame({'a_x':['a','b','c'],'b_x':['a','b','c'] ,'c_x':['a','b','c'],'d_x':['a','b','c'],'a_z':['a','b','i'],'b_z':['a','t','c'] ,'c_z':['c','c','c'],'d_z':['a','b','c']})
我有另一個包含列的資料集:原始,_x,_z。
header_comp=pd.DataFrame({'original':['a','b','c','d'],'_x':['a_x','b_x','c_x','d_x'],'_z':['a_z','b_z','c_z','d_z']})
我正在嘗試使用 header_comp 創建一個回圈,以將 _x 列與相應的 _z 列進行比較,以便在原始 df 資料集中創建新列:a_comp、b_comp、c_comp、d_comp。
這些列中的每一列都將比較 i_x 是否等于 i_z 并輸出 1 或 0。
因此,輸出應如下所示:
df=pd.DataFrame({'a_x':['a','b','c'],'b_x':['a','b','c'] ,'c_x':['a','b','c'],'d_x':['a','b','c'],'a_z':['a','b','i'],'b_z':['a','t','c'] ,'c_z':['c','c','c'],'d_z':['a','b','c'],'a_comp':[1,1,0],'b_comp':[1,0,1] ,'c_comp':[0,0,1],'d_comp':[1,1,1]})
到目前為止,我的代碼看起來像這樣
for i in range(0, len(header_match)):
df[header_matrch.iloc[i,0] ' comp'] = (df[header_match.iloc[i,1]==df[header_match.iloc[i,2]]).astype(int)
但是,這不起作用,出現“Pivotrelease_x”錯誤。有人可以幫我解決這個問題嗎?
如果我只是將代碼用于 for 回圈之外的各個列,則沒有問題。例如
df[header_matrch.iloc[1,0] ' comp'] = (df[header_match.iloc[1,1]==df[header_match.iloc[1,2]]).astype(int)
謝謝。
uj5u.com熱心網友回復:
您可以只使用中的值header_comp來索引中的值df:
df[header_comp['original'] '_comp'] = (df[header_comp['_x']].to_numpy() == df[header_comp['_z']]).astype(int)
輸出:
>>> df
a_x b_x c_x d_x a_z b_z c_z d_z a_comp b_comp c_comp d_comp
0 a a a a a a c a 1 1 0 1
1 b b b b b t c b 1 0 0 1
2 c c c c i c c c 0 1 1 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486110.html
