我需要获取列以值'MA', 'KP'
开头的值。
我正在尝试将数据框查询链接起来:
df.loc[df['REFERRAL_GRP'].str.startswith("KP")==True | df['REFERRAL_GRP'].str.startswith("MA")==True]
这似乎不起作用,因为该列包含pd.nan对象(NULL值)。
本身,查询有效,如何将这两个查询合并在一起?
谢谢
这是我的错误消息:
Traceback (most recent call last):
Debug Probe, prompt 40, line 1
File "c:\Python27\Lib\site-packages\pandas\core\generic.py", line 892, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
答案 0 :(得分:2)
尝试numpy logical_or
import numpy as np
df.loc[np.logical_or(df['REFERRAL_GRP'].str.startswith("KP")==True , df['REFERRAL_GRP'].str.startswith("MA")==True)]
答案 1 :(得分:1)
这是我们经常看到的一个问题。
df.loc[
# 2. This returns a whole lot of `True`s or `False`s
df['REFERRAL_GRP'].str.startswith("KP")==True
# 1. `|` is expecting a `True` or `False`
|
# 2. This returns a whole lot of `True`s or `False`s
df['REFERRAL_GRP'].str.startswith("MA")==True
]
通过用括号括起条件来修复它
df.loc[
# 1. Series of `True`s or `False`s
(df['REFERRAL_GRP'].str.startswith("KP")==True)
# 2. `|` is now a operator on `pd.Series` and is expecting `pd.Series`
|
# 1. Series of `True`s or `False`s
(df['REFERRAL_GRP'].str.startswith("MA")==True)
]
那就是说,我会这样做
df.loc[df.REFERRAL_GRP.str.match('^KP|MA')]