簡體   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