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

标签 python pandas dataframe data-cleaning

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

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

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

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

感谢您的帮助。

最佳答案

你这里有一些错误:

  • len(x) != 2将返回一个 bool 值。即您尝试使用 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)] 

关于python - 从数据框中删除不包含特定长度字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61289419/

相关文章:

python - WSGI 应用程序中的 cherrypy 和相对路径

python - 加速常用的 Django 随机查询

python - 使用 Lambda X 和 Pandas 获取字符串中的第一个单词

在 R 中按组删除异常值

python - 获取 B 列中 A 列中找到的字符串数,并在新列中返回值

python - 根据 pandas DataFrame 中的组将字符串组合到列中

python - 如何从列表列表中获取整数

python - Pytesseract,试图从屏幕上检测文本

python - 从 pandas 数据透视表生成 Plotly 热图

python - 直到行 Pandas 的最小值