我试图获取Csv文件的一列,并试图打印出任何大于标准偏差x3的数字
import pandas as pd
df = pd.read_csv('/Users/aaronhuang/Desktop/ffp/exfileDATA.csv', usecols=[1], header=0)
stand = round(df.std(), 2)
print(df)
conf = stand * 3
print(round(conf, 2))
for rogue in df:
if df <= conf:
print(df)
运行时,会显示:
Magnitude
0 19.472
1 19.445
2 19.484
3 19.157
4 19.376
... ...
6096 19.063
6097 19.178
6098 19.386
6099 19.092
6100 19.191
[6101 rows x 1 columns]
Magnitude 0.42
dtype: float64
Traceback (most recent call last):
File "/Users/aaronhuang/PycharmProjects/EXTTEst/Code sandbox.py", line 12, in <module>
if df <= conf:
File "/Users/aaronhuang/.conda/envs/EXTTEst/lib/python3.8/site-
packages/pandas/core/generic.py", line 1478, in __nonzero__
raise ValueError(
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(),
a.any() or a.all().
Process finished with exit code 1
如何解决这个问题? 谢谢
为数据帧分配z分数,检查将轻而易举
或者简单地说:
您缺少两个步骤和最后一个细节:
<= conf
计算。这就是您得到的特定错误的来源。假设您使用的列名为‘Magnitude’
,那么计算结果应该是df[‘Magnitude’] <= conf’
李>True
或False
,具体取决于’Magnitude’
中的元素在<= conf
表达式中的求值方式。但是,我们可以使用这个布尔序列作为索引器来实际过滤数据帧,通过在数据帧索引器语法中放置宝贵的表达式来获得我们想要的结果:`df[df['magnity']<;=conf]'print()
命令中即可。最后形式:相关问题 更多 >
编程相关推荐