我已经搜索过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
...
答案 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))))]