[英]Select ALL rows where Pandas DataFrame Column values in a List
我一直在处理这个问题几个小时,但我无法获得正确的结果。
我有一个看起来像这样的DataFrame:
df:
Col1 Col2 Col3 Col4
aaa bbb ccc 1
aaa bbb ccc 2
aaa bbb ccc 3
aaa bbb ccc 4
aaa bbb ccc 5
清单= [1,3,5]
我想做的是在df中选择列表中Col4值的所有行。
我希望结果是:
new_df:
Col1 Col2 Col3 Col4
aaa bbb ccc 1
aaa bbb ccc 3
aaa bbb ccc 5
我的代码如下所示:
new_df = df[df['Col4'].isin(List)]
我的输出/错误是:
Empty DataFrame
Columns: [Col1, Col2, Col3, Col4]
Index: []
[0 rows x 4 columns]
我对python3和Pandas非常陌生。 任何帮助和提示都适用。 谢谢提前...
由于尚不清楚dtype
是什么(我非常怀疑它是整数的pd.Series.infer_dtypes
),因此您可以使用pd.Series.infer_dtypes
( pd.Series.infer_dtypes
新增v0.22
)并过滤结果。
m = df.Col4.infer_objects().isin([1, 3, 5])
m
0 True
1 False
2 True
3 False
4 True
Name: Col4, dtype: bool
df[m]
Col1 Col2 Col3 Col4
0 aaa bbb ccc 1
2 aaa bbb ccc 3
4 aaa bbb ccc 5
如果您要坚持使用老式的方法,总会有astype
。
df[df.Col4.astype(int).isin([1, 3, 5])]
或者,如果不起作用,请使用to_numeric
;
df[pd.to_numeric(df.Col4, errors='coerce').isin([1, 3, 5])]
Col1 Col2 Col3 Col4
0 aaa bbb ccc 1
2 aaa bbb ccc 3
4 aaa bbb ccc 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.