gpt4 book ai didi

python - 根据两个字符串值评估 Pandas DataFrame

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

我有一个 Pandas DataFrame“表”,其中包含一个名为“OPINION”的列,其中填充了字符串值。我想创建一个名为“cond5”的新列,其中“OPINION”为“买入”或“中性”的每一行都填充 TRUE。

我已经尝试过

table["cond5"]= table.OPINION == "buy" or table.OPINION == "neutral"

这给了我一个错误,并且

table["cond5"]= table.OPINION.all() in ("buy", "neutral")

对所有行返回 FALSE。

最佳答案

正如 Ed Chum 指出的那样,您可以使用 isin method :

table['cond5'] = table['OPINION'].isin(['buy', 'neutral'])

isin 检查是否完全相等。也许这将是最简单且最具可读性

<小时/>

修复

table["cond5"] = table.OPINION == "buy" or table.OPINION == "neutral"

使用

table["cond5"] = (table['OPINION'] == "buy") | (table['OPINION'] == "neutral")

括号是必需的,因为 |higher precedence (binding power)==

x 或 y 要求 xy 为 bool 值。

(table['OPINION'] == "buy") or (table['OPINION'] == "neutral")

Series can no be reduced to a single boolean value 起引发错误.

因此,请使用逻辑或运算符|,它按系列元素取值的

<小时/>

另一种选择是

import numpy as np
table["cond5"] = np.logical_or.reduce([(table['OPINION'] == val) for val in ('buy', 'neutral')])

如果 ('buy', 'neutral') 是一个更长的元组,这可能会很有用。

<小时/>

另一种选择是使用 Pandas' vectorized string method, str.contains :

table["cond5"] = table['OPINION'].str.contains(r'buy|neutral')

str.contains 在 Cythonized 循环中为 table['OPINION'] 中的每个项目执行模式 r'buy|neutral' 的正则表达式搜索

<小时/>

现在如何决定使用哪一个?这是使用 IPython 的 timeit 基准测试:

In [10]: table = pd.DataFrame({'OPINION':np.random.choice(['buy','neutral','sell',''], size=10**6)})

In [11]: %timeit (table['OPINION'] == "buy") | (table['OPINION'] == "neutral")
10 loops, best of 3: 121 ms per loop

In [12]: %timeit np.logical_or.reduce([(table['OPINION'] == val) for val in ('buy', 'neutral')])
1 loops, best of 3: 204 ms per loop

In [13]: %timeit table['OPINION'].str.contains(r'buy|neutral')
1 loops, best of 3: 474 ms per loop

In [14]: %timeit table['OPINION'].isin(['buy', 'neutral'])
10 loops, best of 3: 40 ms per loop

所以看起来isin是最快的

关于python - 根据两个字符串值评估 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28696232/

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