繁体   English   中英

如何在Python中将dict列表写入CSV并从CSV缓冲区创建熊猫数据框?

[英]How to write a list of dicts to a csv and create a pandas dataframe from the CSV buffer in Python?

我试图从字典列表中创建一个csv对象,然后通过读取该csv对象作为字符串缓冲区来创建一个熊猫数据框。 但是结果熊猫数据框在我看来并不正确。 我不确定如何正确格式化。 我想知道是否有人可以建议我采用正确的方法。 这是我正在使用的代码:

import pandas as pd
import io
import csv
data = [{"x":123,"y":146},{"x":146,"y":None},
           {"x":187,"y":123},{"x":114,"y":184},{"x":1328,"y":977}]
output = io.StringIO()
writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)
writer.writerow(data)
output.getvalue()
pd.read_csv(io.StringIO(output.getvalue()))

最后一行在一行中生成以下内容:

{'x': 123, 'y': 146}    {'x': 146, 'y': None}   {'x': 187, 'y': 123}    {'x': 114, 'y': 184}    {'x': 1328, 'y': 977}

我想将此格式设置为xy列名称,并将相应的值设置为行。

谢谢

您可以使用以下代码-

import pandas as pd

data = [{"x":123,"y":146},
        {"x":146,"y":None},
        {"x":187,"y":123}, 
        {"x":114,"y":184},
        {"x":1328,"y":977}]

data = pd.DataFrame(data)
data.to_csv("/tmp/test.csv", index=None)
pd.read_csv('/tmp/test.csv', index_col=None)

这是一种更简单的方法

import json
import pandas as pd

data = [{"x":123,"y":146},{"x":146,"y":None},
       {"x":187,"y":123},{"x":114,"y":184},{"x":1328,"y":977}]

data = json.dumps(data)
df = pd.read_json(data)

print(df)

输出:

      x      y
0   123  146.0
1   146    NaN
2   187  123.0
3   114  184.0
4  1328  977.0

请注意,列“ y”被强制为浮点数,因为NaN是浮点数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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