[英]Copy row value to adjacent column based on value in Pandas DataFrame
我有一個帶有兩列A和B的pandas DataFrame,其中包含數值或NaN。 如果一列中出現數值,則另一列中的對應單元格將始終為NaN,例如:
A B
0 123 NaN
1 456 NaN
2 NaN 789
我想復制(或移動)A列中的所有非NaN值以覆蓋B列中的相應NaN,例如:
A B
0 123 123
1 456 456
2 NaN 789
基於對類似問題的答復 ,我提出了:
mask = (df['A'] != np.nan)&(df['B'] == np.nan)
df['B'][mask] = df['A'][mask]
但這不會導致任何變化。 誰能解釋我要去哪里錯了?
您可以使用combine_first
或fillna
:
df.B = df.B.combine_first(df.A)
print (df)
A B
0 123.0 123.0
1 456.0 456.0
2 NaN 789.0
要么:
df.B = df.B.fillna(df.A)
print (df)
A B
0 123.0 123.0
1 456.0 456.0
2 NaN 789.0
ANF如果沒有NaN
值在B
更換投后int
:
df.B = df.B.fillna(df.A).astype(int)
print (df)
A B
0 123.0 123
1 456.0 456
2 NaN 789
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.