【发布时间】:2013-10-21 13:56:52
【问题描述】:
这是我在 Pandas 中尝试做的事情:
- 加载包含特定日期股票信息的 CSV 文件
- 在
date列中查找最早和最晚的日期 - 创建一个新的数据框,填充最早和最晚之间的所有日期(NaN 或类似“缺失”的所有列都可以)
目前看起来是这样的:
import pandas as pd
import dateutil
df = pd.read_csv("https://dl.dropboxusercontent.com/u/84641/temp/berkshire_new.csv")
df['date'] = df['date'].apply(dateutil.parser.parse)
new_date_range = pd.date_range(df['date'].min(), df['date'].max())
df = df.set_index('date')
df.reindex(new_date_range)
不幸的是,这引发了以下我不太明白的错误:
ValueError: Shape of passed values is (3, 4825), indices imply (3, 4384)
我已经尝试了十几种这样的变体 - 没有任何运气。任何帮助将不胜感激。
编辑:
经过进一步调查,问题似乎是由重复索引引起的。 CSV 确实包含每个日期的多个条目,这可能是导致错误的原因。
这个问题仍然很重要:尽管每个日期都有重复的条目,但我怎样才能填补两者之间的空白?
【问题讨论】:
-
哪一行抛出异常?已经是
read_csv了吗? -
@Alfe 不,引发错误的行是带有
reindex的行。我还在问题中添加了更多信息,因为我认为问题是由 CSV 中的重复键引起的。