python - 从数据框中删除不包含特定长度字符串的行
问题描述
我有一个数据框,其中包含一个带有 XXX/XX/XXX 形式的字符串的列。我想删除“/”之间的字符串长度不等于 2 的所有行。
我收到以下代码的“关键错误:真”:
df_issues = df_new[len(df_new['Job'].str.split('/')[1]) != 2 ]
我的方法是创建一个包含所有行的系列,其中第一个“/”之后的字符串长度不等于 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)]
推荐阅读
- delphi - Delphi 编译器错误 E2382 无法使用实例变量调用构造函数的解释
- sql - 将一列交换到另一列
- asp.net-core - 带有JsonDocument无参数构造函数的Net core 3 InMemorydatabase问题
- java - 具有别名参数名称以接受 Url Encoded Form 数据值
- redis - Redis - 集群中的总键
- c++ - C++ TCP CPU 随时间增加(小时)
- thymeleaf - Thymeleaf - 使用 javascript 作为 th:if 条件
- google-analytics - Google analytic device types aggregated over several pages matching a regex
- javascript - FlatList does not render any text in react-native
- python - Convert a list of string into one string such that if any string present inside list has space then it will be a string in output string