首页 > 解决方案 > 如何将 csv 文件读取为 json,然后将其作为列表读取并删除选定列表?

问题描述

我目前正在测试如何分析包含大量数据(如 30000 条记录)的大型 CSV 文件下图是我想提取“动画”、“戏剧”、“喜剧”等措辞的专栏的一部分.

我建议的步骤如下:

  1. 打开 CSV 文件并将其读取为 json?以便数据保存在列表中?
  2. 使用 for-loop 循环整个列(我不确定这部分)
  3. 删除列表?或提取措辞?

以下是 2 列,还有更多列,但我想先尝试提取单词。

在此处输入图像描述

在此处输入图像描述

样本数据:

[{'id': 16, 'name': 'Animation'}, {'id': 35, 'name': 'Comedy'}, {'id': 10751, 'name': 'Family'}]
[{'id': 12, 'name': 'Adventure'}, {'id': 14, 'name': 'Fantasy'}, {'id': 10751, 'name': 'Family'}]
[{'id': 10749, 'name': 'Romance'}, {'id': 35, 'name': 'Comedy'}]
[{'id': 35, 'name': 'Comedy'}, {'id': 18, 'name': 'Drama'}, {'id': 10749, 'name': 'Romance'}]
[{'id': 35, 'name': 'Comedy'}]
[{'id': 28, 'name': 'Action'}, {'id': 80, 'name': 'Crime'}, {'id': 18, 'name': 'Drama'}, {'id': 53, 'name': 'Thriller'}]
[{'id': 28, 'name': 'Action'}, {'id': 80, 'name': 'Crime'}, {'id': 18, 'name': 'Drama'}, {'id': 53, 'name': 'Thriller'}]
[{'id': 28, 'name': 'Action'}, {'id': 80, 'name': 'Crime'}, {'id': 18, 'name': 'Drama'}, {'id': 53, 'name': 'Thriller'}]
[{'id': 35, 'name': 'Comedy'}, {'id': 10749, 'name': 'Romance'}]
[{'id': 28, 'name': 'Action'}, {'id': 12, 'name': 'Adventure'}, {'id': 18, 'name': 'Drama'}, {'id': 10751, 'name': 'Family'}]```

标签: pythonjsonpandaslistcsv

解决方案


您的方法是正确的,但我会说它不会那么有效,而是您可以优化您的源代码以以适当的方式提供文件。

试试下面的代码,希望这会有所帮助。

import ast, json
import pandas as pd
from csv import reader
file_name = 'test_file.csv'
data = []
with open(file_name, 'r') as read_obj:
    csv_reader = reader(read_obj)
    headings = next(csv_reader)
    for row in csv_reader:
        data.extend(ast.literal_eval(row[0]))

df = pd.DataFrame(data)
out_df = df[df['name'].str.contains("Animation|Drama|Comedy")]
print(out_df)

我希望你可以从那里开始。


推荐阅读