[英]How to clean this csv data so that I can read it into a pandas dataframe
我有一个包含 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”而另一些则没有,一些列表只有一个元素,而另一些则有更多。
我不确定如何清理这些数据。
我最终想要做的是清理这个 csv 文件,然后使用
import pandas as pd
cereal_df = pd.read_csv("file.csv")
您的数据可能是包含 Python 数据结构列表的行,因为这种方法可能是使用ast
库来解析每一行并将文本转换回实际的 Python 数据。 然后可以以 JSON 格式写回。
Pandas read_json()
function 可用于读取它。例如:
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)
这会给你一个 dataframe 如下:
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 7 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 ROOT 1611074854903 11 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.