重新索引以将缺失的日期添加到 Pandas 数据框

Joh*_*ith 4 python date pandas

我尝试解析一个如下所示的 CSV 文件:

dd.mm.yyyy   value

01.01.2000   1
02.01.2000   2
01.02.2000   3
Run Code Online (Sandbox Code Playgroud)

我需要添加缺失的日期并用NaN根据值填充。我Series.reindex这个问题中使用过

import pandas as pd

ts=pd.read_csv(file, sep=';', parse_dates='True', index_col=0)

idx = pd.date_range('01.01.2000', '02.01.2000')

ts.index = pd.DatetimeIndex(ts.index)
ts = ts.reindex(idx, fill_value='NaN')
Run Code Online (Sandbox Code Playgroud)

但结果是,由于日期格式(即 mm/dd 而不是 dd/mm),某些日期的值会被交换:

01.01.2000   1
02.01.2000   3
03.01.2000   NaN
...
...
31.01.2000   NaN
01.02.2000   2
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法(即添加dayfirst=Trueread_csv)来做对,但仍然无法弄清楚。请帮忙。

Mik*_*ler 5

设置parse_dates为第一列parse_dates=[0]

ts = pd.read_csv(file, sep=';', parse_dates=[0], index_col=0, dayfirst=True)

idx = pd.date_range('01.01.2000', '02.01.2000')

ts.index = pd.DatetimeIndex(ts.index)
ts = ts.reindex(idx, fill_value='NaN')
print(ts)
Run Code Online (Sandbox Code Playgroud)

印刷:

              value
2000-01-01        1
2000-01-02        2
2000-01-03      NaN
...
2000-01-31      NaN
2000-02-01        3
Run Code Online (Sandbox Code Playgroud)

parse_dates=[0]告诉 pandas 将第一列显式解析为日期。从文档:

parse_dates : 布尔值、整数或名称列表、列表列表或字典

如果为 True -> 尝试解析索引。

如果 [1, 2, 3] -> 尝试将第 1、2、3 列解析为单独的日期列。

如果 [[1, 3]] -> 合并第 1 列和第 3 列并解析为单个日期列。

{'foo' : [1, 3]} -> 将第 1、3 列解析为日期并调用结果 'foo'

iso8601 格式的日期存在快速路径。