从 csv 文件向时间序列添加缺失日期
Adding missing dates to a time series from a csv file
我有一个变量 'GWL' 的每月时间序列,但缺少几个日期。
import pandas as pd
df = pd.read_csv(r'1218_29_0.csv')
df.head(5)
date GWL
0 15/01/2001 9.73
1 15/08/2001 10.55
2 15/11/2001 11.65
3 15/01/2002 9.72
4 15/04/2002 9.92
我曾尝试关注其他帖子,但其中 none 处理 CSV 格式的数据库。
如何添加缺失的日期(月份)并用 Nan 填充它们的值?
我加载使用:
df = pd.read_csv(io.StringIO('''date GWL
15/01/2001 9.73
15/08/2001 10.55
15/11/2001 11.65
15/01/2002 9.72
15/04/2002 9.92'''), sep='\s{2,}', engine='python', parse_dates=['date'])
您需要在代码中做的只是将 parse_dates=['date']
参数传递给您的 pd.read_csv
。不要传递其他东西。我需要使用 io.StringIO
,因为您不会以构造函数格式提供数据。
这产生:
date GWL
0 2001-01-15 9.73
1 2001-08-15 10.55
2 2001-11-15 11.65
3 2002-01-15 9.72
4 2002-04-15 9.92
构造一个 Ides-centred 月度日期范围:
months = df['date'] - pd.offsets.MonthBegin()
d_range = pd.date_range(months.min(), months.max(), freq='M')
d_range = d_range - pd.offsets.MonthBegin() + pd.offsets.Day(14)
重建索引:
>>> df.set_index('date').reindex(d_range)
GWL
2001-01-15 9.73
2001-02-15 NaN
2001-03-15 NaN
2001-04-15 NaN
2001-05-15 NaN
2001-06-15 NaN
2001-07-15 NaN
2001-08-15 10.55
2001-09-15 NaN
2001-10-15 NaN
2001-11-15 11.65
2001-12-15 NaN
2002-01-15 9.72
2002-02-15 NaN
2002-03-15 NaN
我有一个变量 'GWL' 的每月时间序列,但缺少几个日期。
import pandas as pd
df = pd.read_csv(r'1218_29_0.csv')
df.head(5)
date GWL
0 15/01/2001 9.73
1 15/08/2001 10.55
2 15/11/2001 11.65
3 15/01/2002 9.72
4 15/04/2002 9.92
我曾尝试关注其他帖子,但其中 none 处理 CSV 格式的数据库。
如何添加缺失的日期(月份)并用 Nan 填充它们的值?
我加载使用:
df = pd.read_csv(io.StringIO('''date GWL
15/01/2001 9.73
15/08/2001 10.55
15/11/2001 11.65
15/01/2002 9.72
15/04/2002 9.92'''), sep='\s{2,}', engine='python', parse_dates=['date'])
您需要在代码中做的只是将 parse_dates=['date']
参数传递给您的 pd.read_csv
。不要传递其他东西。我需要使用 io.StringIO
,因为您不会以构造函数格式提供数据。
这产生:
date GWL
0 2001-01-15 9.73
1 2001-08-15 10.55
2 2001-11-15 11.65
3 2002-01-15 9.72
4 2002-04-15 9.92
构造一个 Ides-centred 月度日期范围:
months = df['date'] - pd.offsets.MonthBegin()
d_range = pd.date_range(months.min(), months.max(), freq='M')
d_range = d_range - pd.offsets.MonthBegin() + pd.offsets.Day(14)
重建索引:
>>> df.set_index('date').reindex(d_range)
GWL
2001-01-15 9.73
2001-02-15 NaN
2001-03-15 NaN
2001-04-15 NaN
2001-05-15 NaN
2001-06-15 NaN
2001-07-15 NaN
2001-08-15 10.55
2001-09-15 NaN
2001-10-15 NaN
2001-11-15 11.65
2001-12-15 NaN
2002-01-15 9.72
2002-02-15 NaN
2002-03-15 NaN