use*_*044 12 python python-2.7 pandas
我有一个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
Run Code Online (Sandbox Code Playgroud)
工作良好
output.ix['Project1', 'Sold Count'] = 400.0
print output.ix['Project1', 'Sold Count']
>>>400.0
Run Code Online (Sandbox Code Playgroud)
不起作用
output.ix['Project1', 'Sold Count'] = [400.0]
print output.ix['Project1', 'Sold Count']
>>>ValueError: setting an array element with a sequence.
Run Code Online (Sandbox Code Playgroud)
Ana*_*mar 16
如果您确实要将列表设置为元素的值,则问题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
Run Code Online (Sandbox Code Playgroud)
演示 -
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]
Run Code Online (Sandbox Code Playgroud)
您还可以指定dtype创建DataFrame的时间,示例 -
output = pd.DataFrame(data = [[800.0]], columns=['Sold Count'], index=['Project1'],dtype=object)
output.loc['Project1','Sold Count'] = [1000.0,800.0]
Run Code Online (Sandbox Code Playgroud)
演示 -
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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13292 次 |
| 最近记录: |