簡體   English   中英

根據Pandas DataFrame中的值將行值復制到相鄰列

[英]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_firstfillna

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM