gpt4 book ai didi

python Pandas : How to filter a dataframe with more than one expression stored in different variables?

转载 作者:行者123 更新时间:2023-11-28 19:56:21 24 4
gpt4 key购买 nike

我正在构建一个多用途用户界面,并将 Pandas 添加到其中。为此,我需要通过用户选择定义的组件(存储在变量中)形成表达式。

一切似乎都很好,但我陷入了死胡同。我希望用户能够选择几个表达式,然后将它们连接起来形成新的数据框。如果我只使用一个表达式,一切都会起作用:

from pandas import read_csv
df = read_csv("SomeCsv.csv")
b= df[r'ID']
a=(b==r'p')
Value=df[a] #Works,returning the rows in df whichs column 'ID' equals r'p'

但是如果我想包含更多的表达式:

from pandas import read_csv
df = read_csv("SomeCsv.csv")
b= df[r'ID']
c=(b==r'p')
d=(b==r'ul')
a=c or d #Breaks at this line
Value=df[a] #Doesnt work. I would expect the rows in df whichs column 'ID' equals r'p' or 'ID' equals r'ul'

并抛出以下错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

在问之前,我尝试了所有我能想到的表达式的.any 和.all 组合,都失败了。

如何通过匹配多个存储在变量中的表达式的列来过滤此数据框?

最佳答案

作为 numpy 的新手,我对此也有些挣扎(不是双关语)。我相信你想要这样的东西:

>>> df[(df['ID'] == 'p') | (df['ID'] == 'ul')]

表达式的计算结果必须为 bool 值(并且项必须通过按位操作),然后用于屏蔽或过滤相应的元素。


另见:

关于 python Pandas : How to filter a dataframe with more than one expression stored in different variables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20262290/

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