[英]How to complete NaN cells based on another Pandas dataframe in Python
[英]Replace dataframe cells with NaN based on indexes and columns of another dataframe
我正在處理兩個數據幀,例如:df1 和 df2,如下面的代碼所示:
import numpy as np
import pandas as pd
df1 = pd.DataFrame([
[1,np.NaN,np.NaN,np.NaN,np.NaN,np.NaN],
[np.NaN,2,np.NaN,np.NaN,np.NaN,np.NaN],
[np.NaN,np.NaN,3,np.NaN,np.NaN,np.NaN],
[np.NaN,np.NaN,np.NaN,4,np.NaN,np.NaN],
[np.NaN,np.NaN,np.NaN,np.NaN,5,np.NaN],
[np.NaN,np.NaN,np.NaN,np.NaN,np.NaN,6],
], columns=['AA','BB','CC','DD', 'EE', 'FF'])
df2 = pd.DataFrame([[100, 200, 300, 400, 500, 600],
[110, 210, 310, 410, 510, 610],
[120, 220, 320, 420, 520, 620],
[130, 230, 330, 430, 530, 630],
[140, 240, 340, 440, 540, 640],
[150, 250, 350, 450, 550, 650]
], columns=['AA', 'BB', 'CC', 'DD', 'EE', 'FF'])
我想獲得一個新的數據框 df3,它保留 df2 的值並根據 df1 的索引用 Nan 替換單元格。 所以結果是這樣的:
DataFrame1_______
AA BB CC DD EE FF
0 1.0 NaN NaN NaN NaN NaN
1 NaN 2.0 NaN NaN NaN NaN
2 NaN NaN 3.0 NaN NaN NaN
3 NaN NaN NaN 4.0 NaN NaN
4 NaN NaN NaN NaN 5.0 NaN
5 NaN NaN NaN NaN NaN 6.0
DataFrame2_______
AA BB CC DD EE FF
0 100 200 300 400 500 600
1 110 210 310 410 510 610
2 120 220 320 420 520 620
3 130 230 330 430 530 630
4 140 240 340 440 540 640
5 150 250 350 450 550 650
DataFrame3_______
AA BB CC DD EE FF
0 100.0 NaN NaN NaN NaN NaN
1 NaN 210.0 NaN NaN NaN NaN
2 NaN NaN 320.0 NaN NaN NaN
3 NaN NaN NaN 430.0 NaN NaN
4 NaN NaN NaN NaN 540.0 NaN
5 NaN NaN NaN NaN NaN 650.0
謝謝您的幫助!
如果可以在df1
和df2
之間匹配索引和列名稱,請使用DataFrame.mask
:
df3 = df2.mask(df1.isna())
print (df3)
AA BB CC DD EE FF
0 100.0 NaN NaN NaN NaN NaN
1 NaN 210.0 NaN NaN NaN NaN
2 NaN NaN 320.0 NaN NaN NaN
3 NaN NaN NaN 430.0 NaN NaN
4 NaN NaN NaN NaN 540.0 NaN
5 NaN NaN NaN NaN NaN 650.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.