Python 添加熊猫中所有缺失的日期
我有以下数据。如何添加所有日期(从1日到月末)?另外,如何从该数据集中删除周六和周日Python 添加熊猫中所有缺失的日期,python,pandas,Python,Pandas,我有以下数据。如何添加所有日期(从1日到月末)?另外,如何从该数据集中删除周六和周日 Date values 31/03/14 -0.0123 30/04/14 0.11168 30/06/14 0.0997 31/07/14 0.007 30/09/14 0.886 Date values 1/3/14 2/3/14 ..... .. 31/3/14 1/4/14 2/4/14 .... ..... 30/09/14 您可以使用date
Date values
31/03/14 -0.0123
30/04/14 0.11168
30/06/14 0.0997
31/07/14 0.007
30/09/14 0.886
Date values
1/3/14
2/3/14
.....
..
31/3/14
1/4/14
2/4/14
....
.....
30/09/14
您可以使用
date\u范围
df.Date=pd.to_datetime(df.Date)
s=pd.DataFrame({'Date':sum([pd.date_range(x,y,freq='D').tolist() for x,y in zip(pd.to_datetime(df.Date.dt.strftime('%Y-%m')),df.Date)],[])})
s=s.merge(df)
s=s[s.Date.dt.weekday<5]
df.Date=pd.to_datetime(df.Date)
s=pd.DataFrame({'Date':sum([pd.Date\u range(x,y,freq='D').tolist(),用于zip中的x,y(pd.to\u datetime(df.Date.dt.strftime('%y-%m')),df.Date)],[]))
s=s.merge(df)
s=s[s.Date.dt.weekdaya假设您可以从csv重新加载数据集
假设您已经加载了数据集
假设你已经加载了你的数据集(压缩)。如果你想排除那些月份,我还添加了不包括五月或八月的掩码
df = df.set_index(pd.to_datetime(df.Date)).drop('Date', axis = 1)
df = df.resample('D').first()
m1 = df.index.weekday < 5 # mask1 (no sat/sun)
m2 = ~df.index.month.isin([5,8]) # mask2 (not May or August)
df = df.loc[m1 & m2].reset_index()
df=df.set_索引(pd.to_datetime(df.Date)).drop('Date',axis=1)
df=df.resample('D').first()
m1=df.index.weekday<5#mask1(无周六/周日)
m2=~df.index.month.isin([5,8])#mask2(不是5月或8月)
df=df.loc[m1&m2]。重置索引()
请发布您想要的数据set@MaxU我已经添加了所需的数据集。基本上,我希望首先删除所有日期,然后删除所有周六和周日(如果可能),然后在值中填充ffil/B。请让我知道这是否可行?您所需的数据集是否包括五月和八月的数据?如果我正确理解了所需的数据集F不应该包含5月和8月的数据…@MaxU-Yep,不清楚。也许OP可以稍后澄清。(最后添加了这个)@MaxU我真的很感谢你的帮助!事实上,我不希望整个数据集都是星期六和星期天,而不仅仅是五月和八月。太棒了!这很有效:)还有,我如何用bffil和ffill来填充缺少的值?@jason只需添加df.fillna(method='ffill',inplace=True)
或bfill
,你也得到了na填充。
Date values
0 2014-03-31 -0.0123
1 2014-04-01 NaN
2 2014-04-02 NaN
3 2014-04-03 NaN
4 2014-04-04 NaN
df = df.set_index(pd.to_datetime(df.Date)).drop('Date', axis = 1)
df = df.resample('D').first()
m1 = df.index.weekday < 5 # mask1 (no sat/sun)
m2 = ~df.index.month.isin([5,8]) # mask2 (not May or August)
df = df.loc[m1 & m2].reset_index()