【发布时间】:2020-03-22 23:49:04
【问题描述】:
我有以下数据帧
import pandas as pd
df = pd.DataFrame({'a': [201, 201, 201, 201, 202, 202, 202, 203, 203, 203],
'b': [ 1, 2, 3, 5, 1, 2, 6, 1, 3, 4]})
df_filter = pd.DataFrame({'a': [ 201, 202, 203],
'b': [[1, 2, 3], [1, 2], [1]]}).set_index('a')
它们看起来像:
>>> df
a b
0 201 1
1 201 2
2 201 3
3 201 5
4 202 1
5 202 2
6 202 6
7 203 1
8 203 3
9 203 4
>>>
>>> df_filter
b
a
201 [1, 2, 3]
202 [1, 2]
203 [1]
我想使用 df_filter 过滤 df。即,我想为'a'的每个元素保留'b'中对应列表的元素。
想要的结果:
>>> df_filtered
a b
0 201 1
1 201 2
2 201 3
4 202 1
5 202 2
7 203 1
另外,我实际上只想为“a”上的每个元素保留“b”的连续元素。我现在可以生成 'df_filter' 并使用它进行过滤,但任何更容易做到这一点的建议都非常受欢迎。
【问题讨论】:
-
尽量不要对数据框使用名称过滤器,这是python中的特殊名称和DataFrame方法
-
感谢您的评论。当然,这些不是实际的数据帧;我保持简单。但是,是的,你是对的。我编辑了它。
标签: python pandas dataframe filtering data-science