【问题标题】:Python 2.7 - Create pandas dataframe using dictionaryPython 2.7 - 使用字典创建熊猫数据框
【发布时间】:2017-12-04 00:46:10
【问题描述】:

我正在尝试像我多年来一直在做的那样创建一个 pandas 数据框

import pandas as pd
pd.DataFrame({'a':1,'b':2})

那里有一个错误 -

ValueError: If using all scalar values, you must pass an index 

我也试过了

pd.DataFrame.from_dict({'a':1,'b':2})

又是同样的错误——

ValueError: If using all scalar values, you must pass an index 

我只想创建一个包含“a”和“b”列的数据框,其值为 1 和 2

a b
1 2

我很确定这就是它一直以来的工作方式,但不知何故它不再适用了。我错过了什么?这是 Python 2.7 的一些奇怪的怪癖吗?还是 Pandas 它拒绝在星期天早上工作?有人能帮帮我吗。

【问题讨论】:

    标签: python-2.7 pandas dataframe


    【解决方案1】:

    使用DataFrame.from_dict:

    d = {'a':1,'b':2}
    df = pd.DataFrame.from_dict(d, orient='index').T
    print (df)
       a  b
    0  1  2
    

    或者:

    df = pd.DataFrame([d.values()], columns=d.keys())
    print (df)
       a  b
    0  1  2
    

    【讨论】:

    • 对不起,我没有说清楚。我想创建一个包含 2 列“a”和“b”的数据框。我已经编辑了我原来的问题。
    • 谢谢!那行得通。但我很确定 pd.DataFrame({'a':1,'b':2}) 过去一直有效。我在这里错过了什么?
    • 它也在文档中 - pandas.pydata.org/pandas-docs/stable/10min.html 。什么时候停止工作?
    • @RohanBapat - 也许是熊猫的一些更新?不确定。
    • 我在文档中没有看到,你看到了吗?从dict 创建Series。但也许前段时间实现了,我的第一个 pandas 版本是 0.16.2。如果使用旧版本我不知道...
    【解决方案2】:

    这就是我做错了 -

    df = pd.DataFrame({'A':[1],'B':[2]})
    

    这些值应该在一个列表中。真是太可惜了。

    【讨论】:

      【解决方案3】:

      通过使用pd.Series

      pd.Series(d).to_frame().T
      Out[74]: 
         a  b
      0  1  2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-14
        • 2014-11-22
        • 1970-01-01
        • 2019-03-31
        • 2021-11-11
        • 2020-07-23
        • 2019-11-12
        相关资源
        最近更新 更多