gpt4 book ai didi

python - Pandas:按 | 过滤行(OR) – 不互相包容

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:14 24 4
gpt4 key购买 nike

我正在寻找一种过滤pandas的方法通过字符串中的替代行。我想要搜索许多不同的术语,因此将它们放入几个变量中比每次需要访问它们时都列出它们会更容易。

我目前做的是:

df = df[df["A"].str.contains("BULL|BEAR|LONG|SHORT", case=False)]

而是做类似的事情:

bull = "BULL|LONG"
bear = "BEAR|SHORT"
leverage = bull + bear

df = df[df["A"].find(leverage, case=False)]

问题是此方法仅从每个变量中过滤出一个替代方案。它将找到"BULL"但不是"LONG" ,它会找到"SHORT"但不是"BEAR" 。看起来它的选择是任意的。根据我正在读取的文件中这些术语是否出现以及出现的位置,结果可能会有所不同。

我假设这是由于 |功能为OR这是相互排斥的。

如果是这样,是否有一个相互包容的选择?我想继续使用字符串来做到这一点。原因是我使用str.contains在依赖相同变量的另一个地方:

df.loc[df["A"].str.contains(bull, case=False), "B"]
df.loc[df["A"].str.contains(bear, case=False), "B"]

最佳答案

您需要添加额外的 '|' 来加入您的条款:

In [227]:
df = pd.DataFrame({'A':['bull', 'bear', 'short', 'null', 'LONG']})
df

Out[227]:
A
0 bull
1 bear
2 short
3 null
4 LONG

In [228]:
bull = "BULL|LONG"
bear = "BEAR|SHORT"
leverage = bull + '|' + bear
df = df[df["A"].str.contains(leverage, case=False)]
df

Out[228]:
A
0 bull
1 bear
2 short
4 LONG

关于python - Pandas:按 | 过滤行(OR) – 不互相包容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051593/

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