Pandas 根据具有不同列的另一个数据框将多个列和行值设置为 nan headers
Pandas set multiple column and row values to nan based on another dataframe with different column headers
我有两个大数据框,df1
:
Col1 Col2 Val1 Val2 Val3
asd ASYL 4.2 4.2
ppq CONE 35 35
DA HU 100 100
而df2
是
Col1 Col2 PR1 PR2 PR3
asd ASYL 7 12 17
ppq CONE 17 19 19
DA HU 5 14 13
两个数据帧具有相同的索引列 Col1
和 Col2
,但 df1
中的 Val1, Val2, Val3
和 df2
中的 PR1, PR2, PR3
列不同。
df2
中列的相关顺序对我来说是相同的。
我想将 df2
中的值设置为 nan
df1
中的 Null
以获得以下值:
Col1 Col2 PR1 PR2 PR3
asd ASYL 7 17
ppq CONE 19 19
DA HU 5 14
我尝试了以下方法:
df2.where(df1.notna())
但它不起作用。
我不是才回答这个问题吗
df1.mask(df1.notna(),df2)
如果 df1
和 df2
中列的相关顺序相同,则使用 df.mask
along with df.set_axis
and df.isna
:
df2 = df2.mask(df1.set_axis(df2.columns, 1).isna())
# print(df2)
PR1 PR2 PR3
Col1 Col2
asd ASYL 7.0 NaN 17.0
ppq CONE NaN 19.0 19.0
DA HU 5.0 14.0 NaN
我有两个大数据框,df1
:
Col1 Col2 Val1 Val2 Val3
asd ASYL 4.2 4.2
ppq CONE 35 35
DA HU 100 100
而df2
是
Col1 Col2 PR1 PR2 PR3
asd ASYL 7 12 17
ppq CONE 17 19 19
DA HU 5 14 13
两个数据帧具有相同的索引列 Col1
和 Col2
,但 df1
中的 Val1, Val2, Val3
和 df2
中的 PR1, PR2, PR3
列不同。
df2
中列的相关顺序对我来说是相同的。
我想将 df2
中的值设置为 nan
df1
中的 Null
以获得以下值:
Col1 Col2 PR1 PR2 PR3
asd ASYL 7 17
ppq CONE 19 19
DA HU 5 14
我尝试了以下方法:
df2.where(df1.notna())
但它不起作用。
我不是才回答这个问题吗
df1.mask(df1.notna(),df2)
如果 df1
和 df2
中列的相关顺序相同,则使用 df.mask
along with df.set_axis
and df.isna
:
df2 = df2.mask(df1.set_axis(df2.columns, 1).isna())
# print(df2)
PR1 PR2 PR3
Col1 Col2
asd ASYL 7.0 NaN 17.0
ppq CONE NaN 19.0 19.0
DA HU 5.0 14.0 NaN