【问题标题】:Saving a Pandas DataFrame to a JSON string将 Pandas DataFrame 保存为 JSON 字符串
【发布时间】:2016-06-22 19:47:49
【问题描述】:

我意识到这似乎是一个已经在这里提出的问题,但似乎没有一个解决方案有效。我从一本看起来类似以下内容的字典开始:

{'2016-05-08': 1, '2016-05-09': nan, '2016-05-05': nan, '2016-05-06': nan, '2016-05-07': nan, '2016-05-11': nan, 'address': '<email address>, '2016-05-12': nan, '2016-05-10': nan}

我将这些数据读入 pandas DataFrame,看起来像这样:

address date1 date2 date3 date4 date5 date6 date7 <email> NaN NaN NaN 1 NaN NaN NaN

然后我使用以下方法计算均值和标准差,并将它们添加到 DataFrame:

mean = pd.Series(df.mean(axis=1), index=df.index) std = pd.Series(df.std(axis=1), index=df.index) df = pd.concat([df, mean, std], axis=1)

当我print df 时,它看起来应该如此。但是,当我使用此方法将 DataFrame 写入 JSON 字符串 df.to_json(&lt;path to file&gt;) 时,它会在我的 JSON 文件中获取原始字典。我想要 JSON 数据中包含标准差和均值的所有数据的 JSON 字符串,我该怎么做?

【问题讨论】:

    标签: python json pandas dataframe


    【解决方案1】:

    如果您的摘要列提供了您期望的数据,请将这些列添加到数据框中。

    试试

    df['std'] = pd.Series(df.std(axis=1), index=df.index)
    
    df['mean'] = pd.Series(df.mean(axis=1), index=df.index)
    

    然后导出为 JSON。

    编辑:好的,我看到你看到它现在可以与 print df 一起使用,抱歉)。

    我无法重现您的结果。这就是我所拥有的:

    import pandas as pd
    
    d = {'2016-05-08': 1, '2016-05-09': float('nan'), '2016-05-05': float('nan'), '2016-05-06': float('nan'), '2016-05-07': float('nan'), '2016-05-11': float('nan'), 'address': '<email address>', '2016-05-12': float('nan'), '2016-05-10': float('nan')}
    
    df = pd.DataFrame(d, index=[0])
    
    mean = pd.Series(df.mean(axis=1), index=df.index)
    std = pd.Series(df.std(axis=1), index=df.index)
    df = pd.concat([df, mean, std], axis=1)
    
    df.to_json('correctoutput.txt')
    

    这是带有输出的 json:

    http://www.jsoneditoronline.org/?id=c0b29191d89fba8b593e29009af4f382

    【讨论】:

    • 这不就是concat方法的作用吗?
    • 不改变输出
    • @GrantSteiner,除了上面的编辑,试试这个没有文件的 df.to_json() 看看你是否得到正确的输出。
    • 想通了。这是程序中其他代码的问题。感谢您的帮助。
    • @grant steiner 很高兴我能帮上忙。将此标记为答案将不胜感激。
    猜你喜欢
    • 2018-06-22
    • 2020-04-12
    • 2018-07-13
    • 1970-01-01
    • 2016-01-11
    • 2015-11-15
    • 2020-11-20
    • 1970-01-01
    • 2022-12-29
    相关资源
    最近更新 更多