在python中过滤与列表值匹配的列值的数据框[重复]
Posted
技术标签:
【中文标题】在python中过滤与列表值匹配的列值的数据框[重复]【英文标题】:Filter dataframe matching column values with list values in python [duplicate] 【发布时间】:2019-04-04 12:57:59 【问题描述】:我有一个DataFrame
,如下所示:
import numpy as np
import pandas as pd
import string
import random
random.seed(42)
df = pd.DataFrame('col1': list(string.ascii_lowercase)[:11],
'col2':[random.randint(1,100) for x in range(11)])
df
col1 col2
0 a 64
1 b 3
2 c 28
3 d 23
4 e 74
5 f 68
6 g 90
7 h 9
8 i 43
9 j 3
10 k 22
我正在尝试根据过滤与值列表匹配的前一个数据帧的行来创建一个新的数据帧。我已经尝试了下一段代码:
df_filt = df[df['col1'] in ['a','c','h']]
但是我得到一个错误。我期待下一个结果:
df_filt
col1 col2
0 a 64
1 c 28
2 h 9
我正在寻找一种灵活的解决方案,该解决方案允许基于匹配列表中比示例中提供的元素更多的元素进行过滤。
【问题讨论】:
使用isin
解决这个问题,df['col1'].isin(['a','c','h'])
【参考方案1】:
您可以使用pandas.Series.isin
进行复合“输入”检查。
输入数据框:
>>> df
>>>
col1 col2
0 a 64
1 b 3
2 c 28
3 d 23
4 e 74
5 f 68
6 g 90
7 h 9
8 i 43
9 j 3
10 k 22
输出数据框:
>>> df[df['col1'].isin(['a', 'c', 'h'])]
>>>
col1 col2
0 a 64
2 c 28
7 h 9
【讨论】:
【参考方案2】:使用isin
df_filt = df[df.col1.isin(['a','c','h'])]
【讨论】:
以上是关于在python中过滤与列表值匹配的列值的数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章