我对python很陌生。我试图像在R中那样过滤data.frame中的行。
sub_df = df[df[main_id]==3]
有效,但
df[df[main_id] in [3,7]]
给我错误
"系列的真值是含糊不清的"
您能否建议我使用正确的语法来编写类似的选项?
答案 0 :(得分:3)
您可以使用pandas isin
功能。这看起来像这样:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'f']})
df[df['A'].isin([2, 3])]
,并提供:
A B
1 2 b
2 3 f
答案 1 :(得分:1)
df[df[main_id].apply(lambda x: x in [3, 7])]
答案 2 :(得分:1)
又一个解决方案:
In [60]: df = pd.DataFrame({'main_id': [0,1, 2, 3], 'x': list('ABCD')})
In [61]: df
Out[61]:
main_id x
0 0 A
1 1 B
2 2 C
3 3 D
In [62]: df.query("main_id in [0,3]")
Out[62]:
main_id x
0 0 A
3 3 D