繁体   English   中英

如何修改循环以便从 Pandas Python 中的 DataFrame 中的列中的值中获取 NaN 值?

[英]How to modify loop so as to take NaN values from values in columns in DataFrame in Pandas Python?

我在 Python 中有我的代码示例,如下所示:

...

for col in df.columns.tolist():
    if val in df[f"{col}"].values:
       if val.isna():
          my_list.append(col)

因此,如果我的 DataFrame 中的某些列包含 NaN 值,则将此列的名称添加到“my_list”。

我知道在我的 DF 中是具有 NaN 值的列,但我的代码生成空的“my_list”,可能错误在行: if val.isna(): ,我该如何修改它? 如何“告诉” Python 从列中获取 NaN 值?

只需使用这样的 if col 语句

for col in df.columns.tolist():
    if val in df[f"{col}"].values:
       if col == False:
          my_list.append(col)

我没有给你最好的方法,只是修复你的小列表循环

通过迭代列中的值,将列名添加到 my_list 然后打破你得到这个:

my_list = ['col1','col3']

我的代码:

import pandas as pd
from numpy import NaN

df = pd.DataFrame(data={
    "col1":[10,2.5,NaN],
    "col2":[10,2.5,3.5],
    "col3":[5,NaN,1]})
my_list = []

for col in df.columns:
    for val in df[col].values:
        if pd.isna(val):
            my_list.append(col)
            break
print(f"{my_list=}")

您可以使用@Orange 提到的更改来修复您的代码。 我只是将其添加为替代方案。 处理数据时,您希望允许数据库/数据分析软件完成繁重的工作。 在 cursor 上循环是您应该尽量避免的事情。

您拥有的代码可以更改为:

for col in df.columns:
    if df[col].hasnans:
        my_list.append(col)

下面的代码在功能上做同样的事情:

df.columns[[df[col].hasnans for col in df.columns]].to_list()

下面的代码使用isnasum计算hasnans

df.columns[df.isna().sum() > 0].to_list()

暂无
暂无

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

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