Python 如何清理此csv数据,以便将其读入数据框

Python 如何清理此csv数据,以便将其读入数据框,python,csv,data-cleaning,Python,Csv,Data Cleaning,我有一个包含2000万行的CSV文件,如下所示: ["{'ev': 'T', 'sym': 'USB', 'i': '52983542396744', 'x': 10, 'p': 48.51, 's': 12, 'c': [14, 37, 41], 't': 1611074854896, 'z': 1}"] ["{'ev': 'T', 'sym': 'CBSH', 'i': '72', 'x': 7, 'p': 70.69, 's': 5, 'c': [37],

我有一个包含2000万行的CSV文件,如下所示:

["{'ev': 'T', 'sym': 'USB', 'i': '52983542396744', 'x': 10, 'p': 48.51, 's': 12, 'c': [14, 37, 41], 't': 1611074854896, 'z': 1}"]

["{'ev': 'T', 'sym': 'CBSH', 'i': '72', 'x': 7, 'p': 70.69, 's': 5, 'c': [37], 't': 1611074854897, 'z': 3}"]

["{'ev': 'T', 'sym': 'ACGL', 'i': '3119', 'x': 12, 'p': 34.32, 's': 100, 't': 1611074854899, 'z': 3}", "{'ev': 'T', 'sym': 'ACGL', 'i': '3120', 'x': 12, 'p': 34.32, 's': 100, 't': 1611074854899, 'z': 3}"]
[]
["{'ev': 'T', 'sym': 'USB', 'i': '53070048741687', 'x': 21, 'p': 48.51, 's': 88, 'c': [14, 37, 41], 't': 1611074854896, 'z': 1}"]
[]
["{'ev': 'T', 'sym': 'ROOT', 'i': '486', 'x': 11, 'p': 19.53, 's': 100, 'c': [14, 41], 't': 1611074854903, 'z': 3}"]
数据不干净,因为您可以看到一些行是空列表,一些字典包含键“c”,而其他字典不包含键“c”,一些列表只有一个元素,而其他列表有更多元素

我不知道如何清理这些数据

我最终想做的是清理这个csv文件,然后使用

import pandas as pd
cereal_df = pd.read_csv("file.csv")

您的数据可能是包含Python数据结构列表的行,因为这样一种方法可以是使用
ast
库解析每一行,并将文本转换回实际的Python数据。然后可以用JSON格式将其写回

Pandas
read\u json()
函数可用于在中读取该内容。例如:

import pandas as pd
import json
import ast


json_data = []

with open('file.csv', encoding='utf-8') as f_input:
    for line in f_input:
        line = line.strip()
        
        if line:    # skip any empty lines
            block = ast.literal_eval(line)
           
            for data in block:
                values = ast.literal_eval(data)
                json_data.append(values)
                
with open('output.json', 'w', encoding='utf-8') as f_output:
    json.dump(json_data, f_output)

# Read the JSON file back in using Pandas
df = pd.read_json('output.json')

print(df)
这将为您提供如下数据帧:

c ev i p s sym t x z
0[14,37,41]T 52983542396744 48.51 12 USB 1611074854896 10 1
1[37]T 72 70.69 5 CBSH 1611074854897 3
2 NaN T 3119 34.32 100 ACGL 1611074854899 12 3
3 NaN T 3120 34.32 100 ACGL 1611074854899 12 3
4[14,37,41]T 53070048741687 48.51 88 USB 1611074854896 21 1
5[14,41]T 486 19.53 100根1611074854903 11 3

看起来不像csv。。。看起来有点奇怪