gpt4 book ai didi

python - 检查Python DataFrame中是否有任何值为0

转载 作者:行者123 更新时间:2023-12-01 09:20:31 26 4
gpt4 key购买 nike

我有一些 csv 文件,例如:

Time   Test Two Three Five Six Seven Eight Nine Ten Eleven Twelve Thirteen  Fifteen  Sixteen   
0 0 0 0 0 0 0 0 0 -0.3 0 0 100 0 0
0.02 0 0 0 0 0 0 0 0 -0.1 0.05 0 99 28 0
0.04 0 0 0 0 0 0 0 0 -0.15 0.05 0.9 99.6 28.7 0
...

我的代码如下所示:

list_of_dfs = [pandas.read_csv(filename) for filename in filenames]
for i in list_of_dfs:
if any(x is 0 for x in i.Test):
print("true")
else:
print("false")

这仅显示错误(即使 i.Test 始终为 0)

print(list_of_dfs[0].Test)

显示

0      0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
..
655 0
656 0
657 0
658 0
659 0
660 0
661 0
662 0
663 0
664 0
665 0
Name: Test, Length: 666, dtype: int64

不应该

any(x is 0 for x in i.Test) 

始终为真,因为我在每个 i.Test 中都至少有一个“0”(因为它们只包含 0)

我的错误是什么?

最佳答案

如果我理解正确的话,问题陈述是为列表中的每个数据帧返回一个值,具体取决于每个数据帧的Test系列中是否存在0。

仅打印 'true''false' 可能还不够,因为您必须将它们链接回数据帧列表。相反,我建议使用字典来存储数据帧:

dict_of_dfs = {fn: pd.read_csv(fn) for fn in filenames}

然后您可以根据您的条件使用字典理解将每个文件名映射到 bool 值:

res = {fn: (df['test'] == 0).any() for fn, df in dict_of_dfs.items()}

然后,您可以通过迭代 res.items() 或通过 res['myfile.csv' 指定特定文件名来确定哪些数据帧满足您的条件]

请注意,我们使用的是矢量化运算,而不是一次迭代一系列元素中的每个元素。这是 Pandas 的一个功能,并将其与您一直在尝试的标准 Python 列表理解或生成器表达式方法分开。矢量化操作可以有效地访问连续的内存块,因此应尽可能首选。

关于python - 检查Python DataFrame中是否有任何值为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50826140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com