繁体   English   中英

选择列表中的Pandas DataFrame列值的所有行

[英]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_dtypespd.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM