从数据框中删除不包含特定长度字符串的行

时间:2020-04-18 12:52:18

标签: python pandas dataframe data-cleaning

我有一个数据框,其中包含带有格式为XXX / XX / XXX的字符串的列。我要删除'/'之间的字符串长度不等于2的所有行。

我收到一个“关键错误:True”,其代码如下:

df_issues = df_new[len(df_new['Job'].str.split('/')[1]) != 2 ]

我的方法是创建一个包含所有行的序列,第一个'/'之后的字符串长度不等于2。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您在这里犯了一些错误:

  • len(x) != 2将返回一个布尔值。也就是说,您尝试使用df_new[True]进行索引,这会返回键错误,因为形状不兼容(您希望沿行创建索引数组,类似于df_new[[True, False, True...]]
  • 您需要再次使用str访问器才能进一步索引第二个列表

改为使用:

df_new[df_new['Job'].str.split(r'/').str[1].str.len().eq(2.)]

或者我们也可以使用str.contains

# corrected with @jon's remarks
df_new[df_new['Job'].str.contains(r'^.{3}/.{2}/.{3}$',na=False)]