首页 > 解决方案 > 从数据框中删除不包含特定长度字符串的行

问题描述

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

我收到以下代码的“关键错误:真”:

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

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

谢谢你的帮助。

标签: pythonpandasdataframedata-cleaning

解决方案


您在这里有一些错误:

  • 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)] 

推荐阅读