Python Pandas Dataframe根据包含字符的列删除行

时间:2018-08-09 23:57:31

标签: python pandas

我有一个数据框,大多数“ 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'

我在这里吗?

1 个答案:

答案 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