将数据从 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 导致值错误的主要内容,如果未能解决你的问题,请参考以下文章

pandas 可以自动从 CSV 文件中读取日期吗?

将地理位置数据添加到 Pandas 数据框

用pandas编写单个CSV标头

如何将 pandas 时间戳添加到数据帧 post read_csv

将文件从私有 S3 存储桶读取到 pandas 数据帧

如何将 CSV/TSV 文件从 Pig 加载/导出到 Pandas?