为了账号安全,请及时绑定邮箱和手机立即绑定

从条目中具有不同长度的字典创建数据框

从条目中具有不同长度的字典创建数据框

红颜莎娜 2019-08-08 10:39:47
从条目中具有不同长度的字典创建数据框假设我有一个包含10个键值对的字典。每个条目都有一个numpy数组。但是,对于所有这些数组,数组的长度并不相同。如何创建每个列包含不同条目的数据框?当我尝试:pd.DataFrame(my_dict)我明白了:ValueError: arrays must all be the same length有什么方法可以解决这个问 我很高兴Pandas可以使用NaN这些列填充较短的条目。
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

在Python 3.x中:


In [6]: d = dict( A = np.array([1,2]), B = np.array([1,2,3,4]) )


In [7]: DataFrame(dict([ (k,Series(v)) for k,v in d.items() ]))

Out[7]: 

    A  B

0   1  1

1   2  2

2 NaN  3

3 NaN  4

在Python 2.x中:


替换d.items()为d.iteritems()。


查看完整回答
反对 回复 2019-08-08
?
森栏

TA贡献1810条经验 获得超5个赞

这是一个简单的方法:


In[20]: my_dict = dict( A = np.array([1,2]), B = np.array([1,2,3,4]) )

In[21]: df = pd.DataFrame.from_dict(my_dict, orient='index')

In[22]: df

Out[22]: 

   0  1   2   3

A  1  2 NaN NaN

B  1  2   3   4

In[23]: df.transpose()

Out[23]: 

    A  B

0   1  1

1   2  2

2 NaN  3

3 NaN  4


查看完整回答
反对 回复 2019-08-08
?
Helenr

TA贡献1780条经验 获得超4个赞

一种整理语法的方法,但仍然与其他答案基本相同,如下所示:


>>> mydict = {'one': [1,2,3], 2: [4,5,6,7], 3: 8}


>>> dict_df = pd.DataFrame({ key:pd.Series(value) for key, value in mydict.items() })


>>> dict_df


   one  2    3

0  1.0  4  8.0

1  2.0  5  NaN

2  3.0  6  NaN

3  NaN  7  NaN

列表也存在类似的语法:


>>> mylist = [ [1,2,3], [4,5], 6 ]


>>> list_df = pd.DataFrame([ pd.Series(value) for value in mylist ])


>>> list_df


     0    1    2

0  1.0  2.0  3.0

1  4.0  5.0  NaN

2  6.0  NaN  NaN

列表的另一种语法是:


>>> mylist = [ [1,2,3], [4,5], 6 ]


>>> list_df = pd.DataFrame({ i:pd.Series(value) for i, value in enumerate(mylist) })


>>> list_df


   0    1    2

0  1  4.0  6.0

1  2  5.0  NaN

2  3  NaN  NaN

在所有这些情况下,您必须小心检查pandas要为您的列猜测的数据类型。例如,包含任何NaN(缺失)值的列将转换为float。


查看完整回答
反对 回复 2019-08-08
  • 3 回答
  • 0 关注
  • 977 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信