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=True
到read_csv
)来做对,但仍然无法弄清楚。请帮忙。
设置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 格式的日期存在快速路径。
归档时间: |
|
查看次数: |
8417 次 |
最近记录: |