Filter dataframe matching column values with list values in python
本问题已经有最佳答案,请猛点这里访问。
我有一个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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 |
我正在尝试基于筛选与值列表匹配的前一个数据帧的行来创建新的数据帧。我尝试了下一段代码:
1 | df_filt = df[df['col1'] in ['a','c','h']] |
号
但我得到了一个错误。我期待下一个结果:
1 2 3 4 5 6 | df_filt col1 col2 0 a 64 1 c 28 2 h 9 |
我正在寻找一个灵活的解决方案,它允许根据匹配列表中比示例中显示的元素更多的元素进行过滤。
使用
1 | df_filt = df[df.col1.isin(['a','c','h'])] |
您可以使用
输入数据帧:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | >>> 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 |
输出数据帧:
1 2 3 4 5 6 | >>> df[df['col1'].isin(['a', 'c', 'h'])] >>> col1 col2 0 a 64 2 c 28 7 h 9 |
号