根据列表从数据框中删除行

时间:2020-07-20 23:14:03

标签: python pandas

我已经搜索过SO,但是没有找到与我想做的事情类似的事情。基本上,我有一个像这样的数据框:

Cod_BMF
Q20
R209
U20
R10
V20
R211
Z20
...
F26
R253
N26
R254
...

我想从几年后的今天(今天是20年)中进行选择,以开始删除不属于列表的行。以R开头的所有内容也应保留。

更具体地说,如果是list = ['Q', 'F']yearsfwd = 5,我想删除所有"26"而不是列表中字母开头的内容。因此,对于我的示例,df将如下所示:

Cod_BMF
Q20
R209
U20
R10
V20
R211
Z20
...
F26
R253
R254
...

1 个答案:

答案 0 :(得分:0)

在Pandas中,使用 apply 方法根据多个条件删除行。

使用apply函数似乎可以正常工作:

list=['Q', 'F']
yearsfwd=5

dfNew = dfx.loc[dfx['Cod_BMF'].apply(lambda x: (x.startswith(tuple(list)) | (x[1:] != str(21 + yearsfwd))))]

-更新-

这将删除数据集中year> = yearsfwd的行。

dfx.loc[dfx['Cod_BMF'].apply(lambda x: (x.startswith(tuple(list)) | (int(x[1:]) < (20 + yearsfwd))))]
相关问题