我有一个数据框,其中包含带有格式为XXX / XX / XXX的字符串的列。我要删除'/'之间的字符串长度不等于2的所有行。
我收到一个“关键错误:True”,其代码如下:
df_issues = df_new[len(df_new['Job'].str.split('/')[1]) != 2 ]
我的方法是创建一个包含所有行的序列,第一个'/'之后的字符串长度不等于2。
感谢您的帮助。
答案 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)]