![](/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.