【发布时间】:2018-08-05 09:09:29
【问题描述】:
这个问题非常与another 和thisone 这两个问题相关,我什至会使用这个问题上非常有用的公认解决方案中的示例。以下是已接受解决方案的示例(归功于 unutbu):
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
'B': 'one one two three two two one three'.split(),
'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
# A B C D
# 0 foo one 0 0
# 1 bar one 1 2
# 2 foo two 2 4
# 3 bar three 3 6
# 4 foo two 4 8
# 5 bar two 5 10
# 6 foo one 6 12
# 7 foo three 7 14
print(df.loc[df['A'] == 'foo'])
产量
A B C D
0 foo one 0 0
2 foo two 2 4
4 foo two 4 8
6 foo one 6 12
7 foo three 7 14
但我想要 A 的所有行,并且只有 B 中的箭头包含“两个”。我的尝试是尝试
print(df.loc[df['A']) & df['B'] == 'two'])
不幸的是,这不起作用。任何人都可以建议一种方法来实现这样的事情吗?如果解决方案有点笼统,例如列 A 没有相同的值(即 'foo' 但具有不同的值并且您仍然想要整个列),那将有很大帮助。
【问题讨论】:
-
如果您不想在 A 上进行过滤,那么就不要在此列中包含任何条件。