我有一个数据框,大多数“ arr”列的日期格式正确为
yyyy-mm-dd
一些不良记录有一个
/
在其中,例如2019/02/10,我想放下它们。
我尝试过:
ttdf = ttdf[ttdf['arr'].map(lambda x: 0 if '/' in x else 1 ) ]
但是我收到一条错误消息:
KeyError: '[1 1 1 ... 0 0 0] not in index'
我在这里吗?
答案 0 :(得分:2)
IIUC
df[~df.dates.atype(str).str.contains('/')]
例如
df = pd.DataFrame()
df['dates'] = ['2011-01-20', '2011-01-20', '2011/01/20', '2011-01-20']
dates
0 2011-01-20
1 2011-01-20
2 2011/01/20
3 2011-01-20
然后
df[~df.dates.str.contains('/')]
dates
0 2011-01-20
1 2011-01-20
3 2011-01-20
您也可以使用map
(如您所试),但是使用bool
值而不是int
,这样就可以执行布尔掩码
df[df['dates'].map(lambda x: False if '/' in x else True )]
dates
0 2011-01-20
1 2011-01-20
3 2011-01-20
但是请注意,False if '/' in x else True
是多余的。这与not '/' in x
df[df['dates'].map(lambda x: not '/' in x )]
dates
0 2011-01-20
1 2011-01-20
3 2011-01-20