簡體   English   中英

根據另一個數據幀的索引和列,用 NaN 替換數據幀單元格

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

謝謝您的幫助!

如果可以在df1df2之間匹配索引和列名稱,請使用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.

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