将数据从 CSV 文件添加到 Pandas Dataframe 导致值错误
Posted
技术标签:
【中文标题】将数据从 CSV 文件添加到 Pandas Dataframe 导致值错误【英文标题】:Adding data to Pandas Dataframe from a CSV file causing Value Errors 【发布时间】:2016-05-07 17:33:46 【问题描述】:我正在尝试将 int
添加到 Pandas
DataFrame
中的现有值
>>> df.ix['index 5','Total Dollars'] += 10
我得到错误:
ValueError: Must have equal len keys and value when setting with an iterable
。
我认为错误来自datatype
,来自:
>>> print type(df.ix['index 5','Total Dollars']
int64 <class 'pandas.core.series.Series'>
数据框通过 CSV 文件填充。我尝试从另一个 CSV 文件加载数据库:
>>> print type(df.ix['index 5','Total Dollars']
int64
是什么导致了这种类型的差异?
【问题讨论】:
您能否提供数据样本让我们重现您的错误? SO 向提问者推荐Minimal, Complete, and Verifiable Example。你可能会得到更好的回应。 几个想法:使用df.info()
检查整个列的类型(而不是单个元素)。一般来说,您会希望看到这些是整数和浮点数。除非它们包含字符串,否则不应将列视为对象。当您在 CSV 中阅读时,pandas 通常会做出正确的类型选择,但并非总是如此,您可能需要在阅读 CSV 期间或之后进行调整。
【参考方案1】:
对于一些早期的pandas
版本,这看起来像是一个错误,如果不是更早的here 和here 讨论,至少用0.16.2
修复。
使用0.17.1
,效果很好:
df = pd.DataFrame(data=[5], columns=['Total Dollars'], index=['index 5'])
Total Dollars
index 5 5
df.ix['index 5', 'Total Dollars'] += 10
Total Dollars
index 5 15
【讨论】:
以上是关于将数据从 CSV 文件添加到 Pandas Dataframe 导致值错误的主要内容,如果未能解决你的问题,请参考以下文章