如何过滤含"TRUE"的Object类型列DataFrame并将列值转小写?
解决方法
你的问题核心是Series没有直接的lower()方法,必须用str.lower()来对Series中的每个字符串元素执行小写转换。另外转字符串时如果原列包含布尔值(比如Python原生True/False),转成字符串后是"True"/"False",只有转小写后才能匹配"true"。
修正后的代码如下:
# 先将列转为字符串类型,统一格式 df["valid"] = df["valid"].astype(str) # 用str.lower()对每个元素转小写,再筛选匹配行 in_df = df[df["valid"].str.lower() == "true"]
额外补充
- 如果原列存在缺失值(
NaN),astype(str)会把NaN转为字符串"nan",转小写后不会被筛选出来。要是需要主动排除这类情况,可以加过滤条件:df["valid"] = df["valid"].astype(str) in_df = df[(df["valid"].str.lower() == "true") & (df["valid"].str.lower() != "nan")] - 也可以不修改原DataFrame,一步完成转换和筛选:
in_df = df[df["valid"].astype(str).str.lower() == "true"]
内容的提问来源于stack exchange,提问作者Blur
相关产品推荐
相关产品推荐

