Python 无法从json到csv再从dataframe获取表格数据

Python 无法从json到csv再从dataframe获取表格数据,python,json,pandas,dataframe,Python,Json,Pandas,Dataframe,我希望我做得对。我是第一次登海报。 我有一个csv数据帧问题,几天来一直在寻找解决方案。这可能是一个小而明显的错误,但我试过一些例子。这是我的密码: print('__Trades__' '\n') since = int(time.time()*1000)-24*60*60*1000 xbtzartrades = c.list_trades(pair='XBTZAR', since=since) exctrades = (xbtzartrades) json_o

我希望我做得对。我是第一次登海报。 我有一个csv数据帧问题,几天来一直在寻找解决方案。这可能是一个小而明显的错误,但我试过一些例子。这是我的密码:

print('__Trades__' '\n')
    since = int(time.time()*1000)-24*60*60*1000
    xbtzartrades = c.list_trades(pair='XBTZAR', since=since)
    exctrades = (xbtzartrades)
    json_object = json.dumps(exctrades, indent=4)  # Serializing json
    with open("exdata/json/xbtzartrades.json", "w") as outfile:    #  Open a file in exdata/json/
        outfile.write(json_object)  # Writing to json
    df = pd.read_json("exdata/json/xbtzartrades.json")   # read the json file
    df.to_csv(r'exdata/csv/xbtzartrades.csv', index=None)
    #  print(df)   #  Print the contents of df
    #  print(xbtzartrades)    #  Print the recent trades.
输出到exdata/json/xbtzartrades.json:

{
    "trades": [
        {
            "sequence": 7933159,
            "timestamp": 1586191458641,
            "price": "139449.00",
            "volume": "0.001444",
            "is_buy": false
        },
        {
            "sequence": 7933158,
            "timestamp": 1586191450810,
            "price": "139449.00",
            "volume": "0.001122",
            "is_buy": false
        },  ------------> ECT.
而不是表格格式。CSV文件的结尾如下所示:

trades
"{'sequence': 7933159, 'timestamp': 1586191458641, 'price': '139449.00', 'volume': '0.001444', 'is_buy': False}"
"{'sequence': 7933158, 'timestamp': 1586191450810, 'price': '139449.00', 'volume': '0.001122', 'is_buy': False}"
"{'sequence': 7933157, 'timestamp': 1586191450695, 'price': '139449.00', 'volume': '0.003657', 'is_buy': False}"
"{'sequence': 7933156, 'timestamp': 1586191446474, 'price': '139450.00', 'volume': '0.004181', 'is_buy': True}"
"{'sequence': 7933155, 'timestamp': 1586191438571, 'price': '139449.00', 'volume': '0.005716', 'is_buy': False}"
"{'sequence': 7933154, 'timestamp': 1586191421319, 'price': '139449.00', 'volume': '0.001918', 'is_buy': False}"
"{'sequence': 7933153, 'timestamp': 1586191420238, 'price': '139449.00', 'volume': '0.007831', 'is_buy': False}"
"{'sequence': 7933152, 'timestamp': 1586191420180, 'price': '139450.00', 'volume': '0.000954', 'is_buy': True}"

看起来
xbtzartrades
有您需要的数据。您似乎不需要经历转换为JSON然后将文件读入pandas的所有中间步骤

xbtzartrades = c.list_trades(pair='XBTZAR', since=since)
df = pd.DataFrame(xbtzartrades['trades'])
df.to_csv('exdata/csv/xbtzartrades.csv', index=None)

因此,我的输出现在是正确的:

sequence,timestamp,price,volume,is_buy
7933537,1586195229592,139689.00,0.071588,False
7933536,1586195229533,139689.00,0.064388,False
7933535,1586195229515,139689.00,0.0072,False
7933534,1586195228302,139689.00,0.164651,False

稍后,我需要将输出与以前的日志合并,因为服务器每隔20到30秒更新一次。那么,真与假事件就必须彼此分离。这些是加密交换服务器中发生的交易。因此,如果exctrades已经是dict,为什么不从exctrades['trades']中的dict列表创建数据帧呢?谢谢Eric。我仍然是蟒蛇和熊猫的不速之客。请给我一个样品好吗。我不熟悉dicts等等。好的,我找到了。我删除了这行:因为=int(time.time()*1000)-24*60*60*1000。谢谢Eric。你真是个天才!当时,这是我存储数据然后重用数据的最简单的方法。我现在必须在其他几个例子中应用这个,但它会使我的代码更短。还有一个问题。每次都必须覆盖此文件“df.to_csv('exdata/csv/xbtzartrades.csv',index=None)”。但事实并非如此。否则一切都是Kk。脚本每运行20秒或30秒,数据一直在更改。