如何自动从CSV文件提取表头列名,替代固定列名实现单词统计?
解决CSV/TXT文件灵活列名的单词统计问题
嘿,这个需求太实用了!原来的代码硬编码了列名sentences,确实会被不同列名的文件限制住。我们可以让代码自动识别CSV里的所有列名,再灵活选择要统计的列——不管列名叫data、content还是其他什么都能轻松搞定。
改进后的代码实现
下面的代码会自动读取文件列名,支持单列自动识别、多列手动选择,还处理了空值避免报错:
import pandas as pd import fileinput # 读取用户输入的CSV/TXT文件 wdata = pd.read_csv(fileinput.input()) # 提取文件中的所有列名 column_names = wdata.columns.tolist() print(f"检测到文件中的列名:{', '.join(column_names)}") # 自动选择列:如果只有一列直接使用,多列则让用户手动选择 if len(column_names) == 1: target_column = column_names[0] print(f"自动选择唯一列:{target_column}") else: target_column = input(f"请输入要统计单词数的列名(可选:{', '.join(column_names)}):") # 统计总单词数:先删除空值行,再拆分单词、计数、求和 total_words = wdata[target_column].dropna().str.split().map(len).sum() print(f"列「{target_column}」的总单词数为:{total_words}")
代码关键点说明
- 自动识别列名:通过
wdata.columns.tolist()获取所有列名,彻底摆脱硬编码限制 - 空值处理:用
dropna()过滤掉空值行,避免str.split()抛出异常 - 灵活适配:单列表自动处理,多列表让用户选择,兼顾不同场景
CSV示例文件
示例1:单列表(列名:data)
data Hello world! This is a test sentence Python programming is fun Another line with multiple words
示例2:多列表(列名:sentences, remarks)
sentences,remarks The quick brown fox jumps over the lazy dog,经典例句 I love working with pandas,测试备注 A short line,简单测试
内容的提问来源于stack exchange,提问作者programming freak




