我有一個包含 5 列的 CSV 資料框。我想根據行中的條件創建一個新列。就像我的 df 是:
col1 col2 col3 col4
1 1 1 1
0 0 1 1
1 1 1 1
nan nan nan nan
這是我的代碼示例
m1 = df[['col1','col2','col3','col4']].all(axis=1)
m2 = df[['col1','col2','col3','col4']].isna().any(axis=1)
df['STATUS AUTO'] = np.select([m2, m1], ['ZD', 'FIC'],'PARTIALLY IMMUNIZED')
它沒有給我"PARTIALLY IMMUNIZED",雖然有很多。就像上面的示例一樣,row1 是 FIC,row2 和 row3 是"PARTIALLY IMMUNIZED",而 row4 是"ZD"。它給了我"ZD"。"PARTIALLY IMMUNIZED"任何幫助,請。PS:(相同的代碼幾個月前適用于另一個 DF,但不適用于這個 DF)
uj5u.com熱心網友回復:
字串而不是數字似乎有問題:
cols = ['col1','col2','col3','col4']
df[cols] = df[cols].astype(float)
m1 = df[cols].eq(1).all(axis=1)
m2 = df[cols].isna().any(axis=1)
df['STATUS AUTO'] = np.select([m2, m1], ['ZD', 'FIC'],'PARTIALLY IMMUNIZED')
print (df)
col1 col2 col3 col4 STATUS AUTO
0 1.0 1.0 1.0 1.0 FIC
1 0.0 0.0 1.0 1.0 PARTIALLY IMMUNIZED
2 1.0 1.0 1.0 1.0 FIC
3 NaN NaN NaN NaN ZD
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/488329.html
標籤:python-3.x 熊猫
下一篇:基于另一個列值創建新列
