簡體   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