Python 按分组的数据框中数据的完整天数
我有这个数据框: 我应用df.groupby('site')按此功能对数据进行分类Python 按分组的数据框中数据的完整天数,python,dataframe,time-series,pandas-groupby,Python,Dataframe,Time Series,Pandas Groupby,我有这个数据框: 我应用df.groupby('site')按此功能对数据进行分类 grouped = Datos.groupby('site') 分类之后,我想每天为所有记录填写“日期”栏。 我认为我应该遵循的程序是: 1.在开始日期和结束日期之间生成完整的序列。(步骤已完成) 将此序列与my groupby的“日期”列进行比较。(“站点”)并添加那些不存在且与“日期”中的日期不匹配的内容 编写一个函数或循环,允许您使用新日期更新“date”列,并使用0完成缺少的值 到目前为止,我只完
grouped = Datos.groupby('site')
分类之后,我想每天为所有记录填写“日期”栏。
我认为我应该遵循的程序是:
1.在开始日期和结束日期之间生成完整的序列。(步骤已完成)
关于我必须为一个项目做同样的事情: 也许这不是你的最佳解决方案,但它可以帮助你。(我希望你不要再为我头疼了) 下面是我如何在 df_日期范围:
日期 0 2019-12-31 1 2020-01-01 2 2020-01-02 3 2020-01-03 4 2020-01-04 5 2020-01-05 达托斯: 日期站点值2 0 2020-01-01站点1 1-1 1 2020-01-01站点2 2-2 2 2020-01-02地点1 10-10 3 2020-01-02地点2 20-20 df1: 场地价值2 日期 2019-12-31 0.0 0.0 2020-01-01站点1 1.0-1.0 2020-01-01站点2 2.0-2.0 2020-01-02站点1 10.0-10.0 2020-01-02站点2 20.0-20.0 2020-01-03 0.0 0.0 2020-01-04 0.0 0.0 2020-01-05 0.0 0.0 分组= 价值2 网站 0.0 0.0 site1 11.0-11.0 site2 22.0-22.0
for site in grouped:
dates = ['2018-01-01', '2020-01-17']
startDate = datetime.datetime.strptime( dates[0], "%Y-%m-%d") # parse first date
endDate = datetime.datetime.strptime( dates[-1],"%Y-%m-%d") # parse last date
days = (endDate - startDate).days # how many days between?
allDates = {datetime.datetime.strftime(startDate+datetime.timedelta(days=k),
"%Y-%m-%d"):0 for k in range(days+1)}
(grouped.apply(add_days))
df_DateRange=pd.DataFrame()
df_1=pd.DataFrame()
grouped=pd.DataFrame()
#1. Create a DataFrame with alldays (your step2):
#Create a DataFrame with alldays
dates_list = ['2019-12-31', '2020-01-05']
df_DateRange['date']=pd.date_range(start=dates_list [0],end=dates_list [-1],freq='1D')
df_DateRange['date']=df_DateRange['date'].dt.strftime('%Y-%m-%d')
df_DateRange.set_index(['date'],inplace=True)
#Set index of you Datos DataFrame:
Datos.set_index(['date'], inplace=True)
#Join both DataFrame:
df_1=df_DateRange.join(Datos)
#2. Replace the NaN:
df_1['site'].fillna("", inplace=True)
df_1['value'].fillna(0, inplace=True)
df_1['value2'].fillna(0, inplace=True)
#3. do the calculation:
grouped = df_1.groupby('site').sum()