根据另一个数据框的索引和列,用NaN替换数据框单元格

费利克斯·德尔·普拉多·赫塔多

我正在使用两个数据帧,例如: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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据条件用另一个数据框替换数据框列 - R

如何根据另一个数据框中的值设置数据框中单元格的值?

根据另一个数据框的索引替换所有列值

如何根据另一个数据框的条件从一个数据框检索单元格

Pandas 使用具有重复索引的另一个数据框列的单元格值更新一列

检查一个数据框单元格是否包含另一个数据框单元格中的值

用另一个数据框的值替换一个数据框的列值

如何按条件用另一个数据框填充数据框并在同一单元格上求和?

根据另一个数据框的列值替换两个数据框列的值

根据另一个数据框的值删除一个数据框的行和列

根据一个或多个条件替换数据框列中的单元格

我想将当前数据框(带有一些空单元格)重塑为另一个数据框并创建新列(连接)

根据索引号在另一个数据框中添加一列

如何从另一个单元格获取数据框单元格内容

熊猫根据另一个数据框将多个列和行值设置为nan

根据另一个数据框python熊猫替换列值-更好的方法?

根据另一个数据框替换列中的值

根据来自另一个数据框的转换表替换列中的字符

根据名称匹配用另一个数据框替换列

根据特定列将pandas数据框列替换为另一个数据框

用另一个数据框中的列替换列

根据另一个数据框的索引保留一个数据框的索引

根据日期和月份从另一个数据框索引重新排列数据框中的组

根据日期和月份从另一个数据框索引重新排列数据框

根据另一个数据框的列名和索引值填充数据框

根据另一个数据框中的相同列组合替换数据框中的 NA

根据另一个数据框中的匹配ID替换数据框列值

如何根据另一个数据框条件替换数据框列中的值

Python根据另一个数据框值中存在的列索引填充数据框值