![](/img/trans.png)
[英]How to modify function so as to return 2 DataFrame depending on values in Python Pandas?
[英]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()
下面的代码使用isna
和sum
计算hasnans
。
df.columns[df.isna().sum() > 0].to_list()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.