逻辑操作:从数据框中的列中选择两个值
Posted
技术标签:
【中文标题】逻辑操作:从数据框中的列中选择两个值【英文标题】:Logic operation: Select two values from a column in a dataframe 【发布时间】:2019-09-30 22:28:48 【问题描述】:我有一个数据框如下,
df2 = pd.DataFrame('a' : ['one', 'one', 'two', 'three', 'two', 'one', 'six'],
'b' : ['x', 'y', 'y', 'x', 'y', 'x', 'x'],
'c' : np.random.randn(7))
我想从df2中选择'a'列等于'二'或'三'的数据,我的代码如下,
df2[df2['a']=='two'or df2['a']=='three']
谁能告诉我为什么我的代码不起作用?
错误:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
提前致谢!
【问题讨论】:
【参考方案1】:使用|
代替or
df2[(df2['a']=='two') | (df2['a']=='three')]
【讨论】:
我知道'|'是按位和或是一个逻辑,但我很困惑为什么我需要在这里使用 |而不是or,你能解释一下吗?谢谢!【参考方案2】:你很接近但你需要做一些事情,首先使用|
运算符指定一个or语句,然后将每个条件放在括号中,
这应该可行
df2.loc[(df2['a']=='two') | (df2['a']=='three')]
【讨论】:
【参考方案3】:那是isin
slice=df2.loc[df2.a.isin(['one','two'])].copy()
slice
Out[797]:
a b c
0 one x -0.064378
1 one y 0.344902
2 two y -0.080087
4 two y 1.433515
5 one x 1.065794
【讨论】:
以上是关于逻辑操作:从数据框中的列中选择两个值的主要内容,如果未能解决你的问题,请参考以下文章
PySpark - 如何根据列中的两个值从数据框中过滤出连续的行块
像 Qlik 一样计算 pandas 数据框中的列中的唯一值?
从两个熊猫系列(csv的列作为DataFrame)创建元素字典