值错误:用序列设置数组元素。对于Pandas

2024-05-13 22:55:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Pandasdataframe,叫做output。基本问题是,我想使用ix函数将dataframe中的某一行、列设置为列表,并得到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.

Tags: andataframe列表outputcountwithelementarray
1条回答
网友
1楼 · 发布于 2024-05-13 22:55:22

如果确实要将列表设置为元素的值,则问题在于列的dtype,在创建数据帧时,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,例如-

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]

相关问题 更多 >