使用pandas提取CSV含watermelon行时仅输出表头空文件如何解决
问题原因
你代码的核心错误是误用了字符串拼接实现通配符匹配逻辑:"watermelon"+"*"在Python中只会直接拼接成固定字符串watermelon*,==是严格相等匹配,相当于你在找fruit列值完全等于watermelon*的行,自然找不到符合条件的数据,最终导出的文件只有表头。
正确实现方式
根据你的需求选对应写法即可:
- 匹配fruit列所有包含watermelon子串的行(比如
red watermelon、watermelon juice都能匹配到):
import pandas as pd df = pd.read_csv("E:/Mac&cheese.csv") # na=False参数是跳过fruit列的空值,避免匹配时报错 newdf = df[df["fruit"].str.contains("watermelon", na=False)] # 如果需要忽略大小写匹配,加case=False参数: # newdf = df[df["fruit"].str.contains("watermelon", na=False, case=False)] newdf.to_csv("E:/Mac&cheese(2).csv",index=False)
- 匹配fruit列以watermelon开头的行:
把筛选条件替换为df["fruit"].str.startswith("watermelon", na=False)即可。
额外排查点
如果修改后还是没有数据,确认csv文件中对应列的列名是不是确实叫fruit,有无拼写错误、大小写差异。
内容的提问来源于stack exchange,提问作者Sabir
相关产品推荐
相关产品推荐

