筛选熊猫中的行,使用分隔符筛选列



我在数据帧中的过滤器有问题,我有几个列的值用(,(分隔。如果其中一个值大于3(对于第一列(,并且对于第二列中的8(这些值没有排序,并且我在一些行中有NaN(,我需要进行筛选

df示例:

data = {'ID':  ["1", "2","3","4"],
'Filter1': ['1', '1,3,5','2,1','7,5'],
'Filter2': ['20,5','7,13','8','9,15,18']
}
df = pd.DataFrame (data, columns = ['ID','Filter1','Filter2'])
ID  Filter1   Filter2
0   1   1         20;5
1   2   1;3;5     7;13
2   3   2;1       8
3   4   7;5       9;15;18

我认为split(','(很有用,但我不知道如何应用它,我认为any((也很有用。

我知道用df["filter1"].str.split(","(得到了一个列表,但我不知道如何在同一行进行过滤,没有更复杂的。

我的第二个想法是拆分列,并用正则表达式过滤列的名称,但我无法使其工作。

df['Filter1].str.split(',', expand=True) 

我需要像这个一样的东西

ID  Filter1   Filter2
1    2   1;3;5     7;13
3    4   7;5       9;15;18

然后让我们将splitany一起使用

s1 = df.Filter1.str.split(',',expand=True).astype(float).gt(3).any(1)
s2 = df.Filter2.str.split(',',expand=True).astype(float).gt(8).any(1)
newdf = df[s1 & s2]
newdf
Out[36]: 
ID Filter1  Filter2
1  2   1,3,5     7,13
3  4     7,5  9,15,18

最新更新