本站消息

  本站每日ip已达10000,出租广告位,位置价格可谈,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

ValueError:使用序列设置数组元素。对于熊猫

发布于2019-09-11 19:41     阅读(885)     评论(0)     点赞(21)     收藏(1)


我有一个Pandas dataframe,叫output基本的问题是我想dataframe使用ix函数在列表中设置一个特定的行,列并且我得到了ValueError: setting an array element with a sequence.我的理解是一个dataframe元素就像一个列表元素,它可以保存任何东西(字符串,列表,元组等) )。我不对吗?

基本设置:

import pandas as pd
output = pd.DataFrame(data = [[800.0]], columns=['Sold Count'], index=['Project1'])
print output.ix['Project1', 'Sold Count']
>>>800

工作良好

output.ix['Project1', 'Sold Count'] = 400.0
print output.ix['Project1', 'Sold Count']
>>>400.0    

不起作用

output.ix['Project1', 'Sold Count'] = [400.0]
print output.ix['Project1', 'Sold Count']
>>>ValueError: setting an array element with a sequence.

解决方案


如果您确实要将列表设置为元素的值,则问题在于dtype列的属性,当您创建DataFrame时,dtype会被推断为float64,因为它只包含数值。

然后,当您尝试将列表设置为值时,由于该错误,它会出错dtype解决这个问题的一种方法是使用非数字dtype(如object)左右。示例 -

output['Sold Count'] = output['Sold Count'].astype(object)
output.loc['Project1','Sold Count'] = [1000.0,800.0] #Your list

演示 -

In [91]: output = pd.DataFrame(data = [[800.0]], columns=['Sold Count'], index=['Project1'])

In [92]: output
Out[92]:
          Sold Count
Project1         800

In [93]: output['Sold Count'] = output['Sold Count'].astype(object)

In [94]: output.loc['Project1','Sold Count'] = [1000.0,800.0]

In [95]: output
Out[95]:
               Sold Count
Project1  [1000.0, 800.0]

您还可以指定dtype创建DataFrame的时间,示例 -

output = pd.DataFrame(data = [[800.0]], columns=['Sold Count'], index=['Project1'],dtype=object)
output.loc['Project1','Sold Count'] = [1000.0,800.0]

演示 -

In [96]: output = pd.DataFrame(data = [[800.0]], columns=['Sold Count'], index=['Project1'],dtype=object)

In [97]: output.loc['Project1','Sold Count'] = [1000.0,800.0]

In [98]: output
Out[98]:
               Sold Count
Project1  [1000.0, 800.0]


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接: https://www.pythonheidong.com/blog/article/108046/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

21 0
收藏该文
已收藏

评论内容:(最多支持255个字符)