gpt4 book ai didi

python - 如何在 pandas 中使用基于 DataFrame bool 值的条件语句

转载 作者:太空狗 更新时间:2023-10-30 00:44:12 24 4
gpt4 key购买 nike

现在我知道如何检查数据帧中多列的特定值了。但是,我似乎无法弄清楚如何根据 bool 响应执行 if 语句。

例如:

使用 os.walk 遍历目录并将特定文件读入数据帧。

for root, dirs, files in os.walk(main):
filters = '*specificfile.csv'
for filename in fnmatch.filter(files, filters):
df = pd.read_csv(os.path.join(root, filename),error_bad_lines=False)

现在跨多个列检查该数据框。第一个值是列名 (column1),下一个值是我在该列 (banana) 中查找的特定值。然后我检查另一列(column2)的特定值(绿色)。如果这两个都是真的,我想执行一个特定的任务。但是,如果它是假的,我想做点别的。

所以像这样:

if (df['column1']=='banana') & (df['colour']=='green'):
do something
else:
do something

最佳答案

如果您想检查 DataFrame 的任何行是否满足您的条件,您可以使用 .any()随着你的病情。示例 -

if ((df['column1']=='banana') & (df['colour']=='green')).any():

例子-

In [16]: df
Out[16]:
A B
0 1 2
1 3 4
2 5 6

In [17]: ((df['A']==1) & (df['B'] == 2)).any()
Out[17]: True

这是因为您的条件 - ((df['column1']=='banana') & (df['colour']=='green')) - 返回一系列真/假值。

这是因为在 pandas 中,当您将一个系列与一个标量值进行比较时,它会返回将该系列的每一行与标量值进行比较的结果,结果是一系列 True/False 值,表示比较结果具有标量值的那一行。示例 -

In [19]: (df['A']==1)
Out[19]:
0 True
1 False
2 False
Name: A, dtype: bool

In [20]: (df['B'] == 2)
Out[20]:
0 True
1 False
2 False
Name: B, dtype: bool

& 为这两个系列按行执行 。示例 -

In [18]: ((df['A']==1) & (df['B'] == 2))
Out[18]:
0 True
1 False
2 False
dtype: bool

现在要检查该系列中的任何值是否为 True,您可以使用 .any() , 要检查系列中的所有值是否为真,您可以使用 .all() .

关于python - 如何在 pandas 中使用基于 DataFrame bool 值的条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32713221/

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