Python 添加熊猫中所有缺失的日期

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

我有以下数据。如何添加所有日期(从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\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()