繁体   English   中英

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

[英]How to fill NaN only in numeric variables if that variable in on list in Python Pandas?

我有如下所示的 Pandas DataFrame:

数据类型:

  • COL1 - 数字
  • COL2 - 对象
  • COL3 - 数字

表格1

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

我还有这样的变量列表: my_list = ["COL1", "COL8", "COL15"]

在以下情况下,我需要用 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 中做到这一点?

您可以结合使用Index.intersectionselect_dtypes来选择要fillna的列,然后update

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM