pandas - 查找支持列表和集合以及 int 和 str 的混合数据类型的空单元格
问题描述
考虑以下数据框。
import pandas as pd
my_df = pd.DataFrame(columns =['A','B','C'])
my_df.at[0,'A'] = 1234
my_df.at[0,'C'] = ['5','6','7']
my_df.at[1,'A'] = set([8,9,10])
my_df.at[1,'B'] = 'my_hat'
然后我想找到所有 nan 的单元格。
for row_index, row_data in my_df.iterrows():
for cell in row_data:
if pd.isnull(cell):
print("found one")
pd.isnull、pd.isna、pd.notnull 都无法处理列表/集合与 ints/str 的混合。
请注意,这是一个非常简化的示例,我需要使用 if 语句测试每个单元格,检测 nans。
解决方案
编辑:
如果你真的需要检查每个单元格NaN
,你可以这样my_df.isna()
做
for row_index, row_data in my_df.isna().iterrows():
for cell in row_data:
if cell:
print("found one")
试试这个看看你的 for 循环的输出。我取出 if 行来显示cell
from for 循环的所有值:
for row_index, row_data in my_df.iterrows():
for cell in row_data:
print(cell)
Output:
1234
nan
['5', '6', '7']
{8, 9, 10}
my_hat
nan
现在尝试:
pd.isnull(['5', '6', '7'])
Out[3183]: array([False, False, False])
pd.isnull
接受scalar or array-like
并返回bool or array-like of bool
。您的一个cell
是数组,因此它返回一个布尔值数组。比较一个布尔值数组的真实性是不明确的,所以熊猫只会抛出错误。
如果您想在 中检查“NaN” df
,请致电isna
或isnull
直接在df
my_df.isna()
或者你需要pd.isnull
整体打电话df
pd.isnull(my_df)
Out[3181]:
A B C
0 False True False
1 False False True
推荐阅读
- javascript - Jest 中针对模拟调用 argumnets 的模糊浮点检查
- mongodb - 请帮助。如何摆脱 mongoDB 中的这个错误
- html - 媒体文件使用
- android - 信号 5 / 信号 11 的本机崩溃 - Chrome.apk
- python - 在python中显示下载百分比进度条
- java - 无法将过滤后的图像保存到外部存储android
- c - 更快的 AVX/2 矩阵向量乘法?
- javascript - 将视频分段流式传输为 1 个视频
- javascript - 我可以使用 Javascript 遍历文件夹中的文件并在 HTML 页面上创建指向它们的链接吗?
- python - 使用 Python 的 http.server,我可以禁用目录列表吗?