Pandas:从dict在DataFrame中创建命名列

ano*_*428 28 python typeerror dataframe pandas

我有一个表格的字典对象:

my_dict = {id1: val1, id2: val2, id3: val3, ...}
Run Code Online (Sandbox Code Playgroud)

我想将其创建为一个DataFrame,我想在其中列出2列'business_id'和'business_code'.

我试过了:

business_df = DataFrame.from_dict(my_dict,orient='index',columns=['business_id','business_code'])
Run Code Online (Sandbox Code Playgroud)

但它表示from_dict没有采用列论证.

TypeError:from_dict()得到一个意外的关键字参数'columns'

And*_*den 29

您可以遍历项目:

In [11]: pd.DataFrame(list(my_dict.iteritems()),
                      columns=['business_id','business_code'])
Out[11]: 
  business_id business_code
0         id2          val2
1         id3          val3
2         id1          val1
Run Code Online (Sandbox Code Playgroud)

  • 对于Python 3,```my_dict.items()````` (19认同)
  • 这并没有完全回答这个问题,因为文档指定可以使用columns关键字参数:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_dict.html (6认同)

小智 11

要获得与文档相同的功能并避免使用代码解决方法,请确保您使用的是最新版本的Pandas.我最近在从Pandas教程运行一行代码时遇到了同样的错误:

pd.DataFrame.from_dict(dict([('A', [1, 2, 3]), ('B', [4, 5, 6])]),orient='index', columns=['one', 'two', 'three'])
Run Code Online (Sandbox Code Playgroud)

我检查了Pandas的版本,发现当版本23可用时我运行的是22版.

import pandas as pd
pd.__version__
Out[600]: '0.22.0'
Run Code Online (Sandbox Code Playgroud)

我用pip升级了:

c:\pip install --upgrade pandas
Run Code Online (Sandbox Code Playgroud)

我确认我的版本更新为23,并且相同的from_dict()代码正常工作.无需修改代码.