如何只在数值变量中填充NaN,如果该变量在Python Pandas的列表中?

baubqpgj  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(115)

我有PandasDataFrame像下面:
数据类型:

  • COL1-数字
  • COL2天体
  • COL3-数字

表1

COL1 | COL2 | COL3 
-----|------|------
123  | AAA  | 99
NaN  | ABC  | 1
111  | NaN  | NaN
...  | ...  | ...

我也有一个变量列表,比如:第一个月
在以下条件下,我需要用0填充NaN:

  • 如果表1中某列是数字的
  • 如果表1中某列具有NaN
  • 如果表1中某列在my_list上

因此,我需要像下面这样的输出,因为只有COL1满足以上所有要求:

COL1 | COL2 | COL3 | COL4
-----|------|------|-------
123  | AAA  | 99   | XC
0    | ABC  | 1    | XB
111  | NaN  | NaN  | XA
...  | ...  | ...  | ...

在Python Pandas中我如何才能做到这一点?

agxfikkp

agxfikkp1#

可以使用Index.intersectionselect_dtypes的组合来选择要在其中执行fillna,然后执行update的列:

df.update(df[df.columns.intersection(my_list)].select_dtypes('number').fillna(0))

相关问题