【问题标题】:How to convert defaultdict to pandas dataframe如何将 defaultdict 转换为 pandas 数据框
【发布时间】:2020-07-09 19:38:24
【问题描述】:

我有一个名为“sum_vol”的默认字典,我需要将其转换为数据框:

defaultdict(int,
            {2930.0: 2838,
             2930.25: 677,
             2930.5: 2780,
             2931.0: 2005,
             2931.75: 1402,
             2932.0: 711,
             2932.5: 2982,
             2931.5: 1500,
             2932.75: 7973,
             2933.0: 12170,
             2933.75: 10009,
             2934.5: 49867,
             2932.25: 1758....

我尝试先将其转换为列表,但是这一步我已经失败了,因为它切断了第二个值:

strlist = ":".join(str(x) for x in sum_vol)
newdf = pd.DataFrame([x for x in strlist.split(': ')], columns =['close'])

我明白了:

    close
0   2930.0
1   2930.25
2   2930.5
3   2931.0
4   2931.75
...

但我想要的输出是:

    close     vol
0   2930.0    2838
1   2930.25    677
2   2930.5    2780
3   2931.0    2005
4   2931.75   1402

如何将 dict 的第二个值添加到新数据框中的第二列?

【问题讨论】:

  • 你可能需要这个,pd.DataFrame([{"close":k, "vol": v} for k,v in sum_vol.items()])
  • @flynn1973 我试过了,但它不起作用。我收到一个错误:'str' object has no attribute 'items'

标签: python dataframe


【解决方案1】:

用途:

df = pd.DataFrame(you_dict.items(), columns=['close', 'vol'])
print(df)

输出:

     close   vol
0  2930.00  2838
1  2930.25   677
2  2930.50  2780
3  2931.00  2005
4  2931.75  1402
5  2932.00   711
6  2932.50  2982

【讨论】:

    【解决方案2】:

    使用'from_records':

    df = pd.DataFrame.from_dict(d, orient="index")
    

    输出是:

                 0
    2930.00   2838
    2930.25    677
    2930.50   2780
    2931.00   2005
    ...
    

    【讨论】:

      猜你喜欢
      • 2019-06-04
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 2019-05-14
      • 2013-12-24
      • 2013-04-07
      • 2021-10-15
      相关资源
      最近更新 更多