【问题标题】:how do i handle a json data in csv file in python?如何在 python 中处理 csv 文件中的 json 数据?
【发布时间】:2018-05-27 10:04:40
【问题描述】:

我目前正在 kaggle 中做一个数据分析项目on the tmdb dataset(顺便说一句,我是一个完全的菜鸟,所以请原谅我的无知),我在数据集中遇到了以下列(第 2 列):- `

类型

[{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 878, "name": "Science Fiction"}]
[{"id": 12, "name": "Adventure"}, {"id": 14, "name": "Fantasy"}, {"id": 28, "name": "Action"}]
[{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 80, "name": "Crime"}]
[{"id": 28, "name": "Action"}, {"id": 80, "name": "Crime"}, {"id": 18, "name": "Drama"}, {"id": 53, "name": "Thriller"}]
[{"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}, {"id": 878, "name": "Science Fiction"}]
[{"id": 14, "name": "Fantasy"}, {"id": 28, "name": "Action"}, {"id": 12, "name": "Adventure"}]
[{"id": 16, "name": "Animation"}, {"id": 10751, "name": "Family"}]

这里的genres是列名,该列每一行的数据用[]括起来

我想要做的是将它转换为以下类型的 fo 列(分隔符可以是除 ',' 之外的任何东西,因为它是一个 CSV 文件:-

genres
Action;Adventure;Fantasy;Fiction;
Adventure;Fantasy;Action;
Action;Adventure;Crime;
And so on...

这是我的代码:-

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import csv

reviews = pd.read_csv("C:/Users/HP/Desktop/data science project/tmpd second attempt/2. prepared data/tmdb_5000_movies.csv")

print(reviews["genres"]);

PS:-这是我的第一个项目所以真的不知道如何处理这个

【问题讨论】:

    标签: python json python-3.x csv


    【解决方案1】:

    这不是 csv 文件。它是一个 json 文件。所以如果你改变

    reviews = pd.read_csv("C:/Users/HP/Desktop/data science project/tmpd second attempt/2. prepared data/tmdb_5000_movies.csv")
    

    reviews = pd.read_json("C:/Users/HP/Desktop/data science project/tmpd second attempt/2. prepared data/tmdb_5000_movies.csv")
    

    它应该可以工作。

    哦,您可能想将文件扩展名从 .csv 更改为 .json

    来自op的重新评论:

    此代码适用于您的示例,有点小技巧,但最好我能快速完成:

    import ast
    with open("untitled.csv") as fi:
        data=fi.readlines()
    cleaned = []
    for da in data:
        l = da.strip("[").strip('\n').strip(']').split(', {')
        for a in l:
            pre=''
            if not a.startswith("{"):
                pre='{'
            cleaned.append(ast.literal_eval(pre+a))
    df = pd.DataFrame(cleaned)
    

    【讨论】:

    • 先生,我向您展示的只是 csv 文件中的一列,其余列是简单的列,其中填充有数字值,例如 id、budget 等,但是此列不同,因为它包含json 数据,我不知道如何以那种形式转换它
    • 好点见修正答案。哦,保拉是一个女性名字。
    • 谢谢女士(对不起,'先生')......我要试试
    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 2013-04-22
    • 2016-02-24
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多