繁体   English   中英

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

[英]Pandas: create named columns in DataFrame from dict

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

my_dict = {id1: val1, id2: val2, id3: val3, ...}

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

我试过了:

business_df = DataFrame.from_dict(my_dict,orient='index',columns=['business_id','business_code'])

但是它说from_dict没有接受一个列参数。

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

您可以遍历项目:

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

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

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

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

import pandas as pd
pd.__version__
Out[600]: '0.22.0'

我用pip升级了:

c:\pip install --upgrade pandas

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

从版本0.23.0开始 ,您可以在from_dict指定columns参数:

my_dict = {id1: val1, id2: val2, id3: val3, ...}
prepared_dict = {i: x for i, x in enumerate(my_dict.items())}
df = pd.DataFrame.from_dict(prepared_dict, orient='index', columns=['business_id', 'business_code'])

注意:我也在这个类似的问题上回答了同样的问题

做这个:

创建数据框

df = pd.DataFrame(data_as_2d_ndarray)

从字典中创建列名的排序列表 - 根据需要调整键karg从dict中获取排序值,显然数据必须具有一致的形状的字典

col_names = sorted(list(col_dict.iteritems()),key=lambda x:x[0])

重塑并设置列名称

df.columns  = zip(*col_names)[1]

这与您面临的TypeError有关。 根据Pandas文档,只有当orient ='index'时,from_dict才会使用关键字'columns'。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM