如何将多个文本文件的词频统计字典转换为DataFrame?
把多个词频字典转换为统一列的DataFrame方法
我来帮你搞定这个问题!把对应不同文本文件的词频字典转成统一列(所有出现过的颜色)、每行对应一个文件的DataFrame其实很简单,结合示例代码给你一步步讲解,直接套用到你的50个文件上就行~
先准备示例数据
假设我们有3个对应文本文件的词频字典,模拟你的50个文件场景:
# 示例:3个文本文件的词频统计结果(颜色为键,计数为值) file1_counts = {"红色": 5, "蓝色": 2, "绿色": 1} file2_counts = {"蓝色": 3, "黄色": 4} file3_counts = {"红色": 2, "绿色": 3, "紫色": 1}
方法一:分步实现(适合理解逻辑)
1. 关联文件名和对应字典
先把每个字典和它对应的文件名绑定起来,方便后续生成行索引:
# 把文件名和对应的词频字典放到一个列表里 file_data = [ ("文件1.txt", file1_counts), ("文件2.txt", file2_counts), ("文件3.txt", file3_counts) ]
2. 提取所有唯一的颜色(作为DataFrame的列)
遍历所有字典的键,收集所有出现过的颜色并去重:
# 获取所有出现过的颜色,作为列名 all_colors = set() for _, counts in file_data: all_colors.update(counts.keys()) all_colors = sorted(all_colors) # 可选:对列名排序,让结果更整齐
3. 构建每行数据并生成DataFrame
对每个文件,遍历所有颜色,取出对应计数(没有的颜色填0),最后用pandas生成DataFrame:
import pandas as pd # 准备每行的数据 rows = [] for filename, counts in file_data: # 对每个颜色,取计数,没有则返回0 row_data = [counts.get(color, 0) for color in all_colors] rows.append(row_data) # 创建DataFrame,行索引是文件名,列是所有颜色 df = pd.DataFrame(rows, index=[name for name, _ in file_data], columns=all_colors)
运行后打印df会得到这样的结果:
蓝色 绿色 红色 紫色 黄色 文件1.txt 2 1 5 0 0 文件2.txt 3 0 0 0 4 文件3.txt 0 3 2 1 0
方法二:简洁实现(适合大量文件场景)
如果你的文件数量多(比如50个),可以用更简洁的方式,直接用pd.DataFrame.from_dict来处理:
import pandas as pd # 先把文件名和字典整理成一个大字典(键是文件名,值是词频字典) file_dict = { "文件1.txt": file1_counts, "文件2.txt": file2_counts, "文件3.txt": file3_counts } # 直接生成DataFrame,缺失值填充为0,转成整数类型 df = pd.DataFrame.from_dict(file_dict, orient='index').fillna(0).astype(int) # 可选:对列名排序 df = df.reindex(sorted(df.columns), axis=1)
这个方法和分步实现的结果完全一致,但代码更短,适合批量处理大量文件。
注意:如果你的词频字典是从本地文件读取的,记得先完成读取逻辑——比如每个文本文件的词频字典如果存在json文件里,就用json.load()加载;如果是自己统计生成的,就把统计后的字典和文件名关联起来即可。
内容的提问来源于stack exchange,提问作者cookie1986
相关产品推荐
相关产品推荐

