繁体   English   中英

如何清理此 csv 数据,以便我可以将其读入 pandas dataframe

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM