python - 使用一个索引将未对齐的时间序列加载到 DataFrame 中?

标签 python pandas

我正在开始学习这个很棒的工具,但我陷入了加载多个时间序列并将它们与“主”日期向量对齐的简单任务。

例如:我有一个 csv 文件:Data.csv,其中第一行包含标题“Date1、Rate1、Date2、Rate2”,其中 Date1 是 Rate1 的日期,Date2 是Rate2 的日期。

在这种情况下,Rate2 有更多的观测值(开始日期与 Date1 相同,但结束日期比 Date1 中的结束日期相距更远,并且缺失值更少),并且所有内容都应根据日期2。

获取以下 DataFrame 的首选方式是什么? (或完成类似的事情)

index(Date2) Rate1 Rate2
11/12/06     1.5   1.8
12/12/06     NaN   1.9
13/12/06     1.6   1.9
etc
etc
11/10/06     NaN   1.2
12/10/06     NaN   1.1
13/10/06     NaN   1.3

我尝试按照官方 pandas.pdf 和谷歌搜索中的示例进行操作,但无济于事。 (我什至买了麦金尼先生的 Pandas 书的预版,但有关 Pandas 的章节还没有准备好:()

有什么好的食谱吗?

非常感谢

编辑:关于将系列分成两个 .CSV 文件的答案: 但是如果我有很多时间序列怎么办,例如

日期 1 价格 1 日期 2 价格 2 ... 日期 N 价格 N

我所知道的是,日期应该几乎相同,异常(exception)来自包含缺失值的系列(没有日期或利率条目)(这将是一些金融经济学时间序列的示例,由方式)

加载此数据集的首选方法仍然是将每个系列拆分为单独的 .CSV 吗?

EDIT2 archlight 是完全正确的,仅仅执行“csv_read”就会把事情搞砸。

基本上,我的问题可以归结为:如何加入几个未对齐的时间序列,其中每个序列都有一个日期列,以及该序列本身的列(从 Excel 导出的 .CSV 文件)

再次感谢

最佳答案

我认为没有必要将数据拆分为多个文件。如何使用 read_csv 加载文件并将每个日期/速率对转换为单独的时间序列?所以你的代码看起来像:

data = read_csv('foo.csv')

ts1 = Series(data['rate1'], index=data['date1'])
ts2 = Series(data['rate2'], index=data['date2'])

现在,要将数据连接在一起并对齐 DataFrame 中的数据,您可以执行以下操作:

frame = DataFrame({'rate1': ts1, 'rate2': ts2})

这将形成 ts1ts2 中日期的并集并对齐所有数据(在适当的位置插入 NA 值)。

或者,如果你有 N 个时间序列,你可以这样做:

all_series = {}
for i in range(N):
   all_series['rate%d' % i] = Series(data['rate%d' % i], index=data['date%d' % i])

frame = DataFrame(all_series)

根据我的经验,这是一种非常常见的模式

关于python - 使用一个索引将未对齐的时间序列加载到 DataFrame 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10883805/

相关文章:

python - python:pip install opencv-python给我错误

python - Pandas:将所有列从字符串转换为数字,除了两个?

python - 有没有办法找到当前行中金额不为0的日期之前的最后一个日期?

python - Pandas - 从 DateTimeIndex 创建列

python - 按月和年对 .csv 中的数据进行排序并计算平均值

java - 有没有类似 j2me 的 python 解析器之类的东西?

python - PyO3 在 Rust 中实现 python 可迭代类

python - 当主要玩家与图像(障碍物)发生碰撞时,您如何让游戏结束?

python - 如何在多列上实现隐马尔可夫模型?

python - pandas dataframe groupby 并填充第一行值