问题描述
您好,我有以下代码,在“过滤器”部分中,我按频道和年份对程序进行过滤,并与分组依据一起得出收视率所在列的每日平均值。
año=[2019,2020]
base2= dataframe
channels=[lista con canales]
def ran_diario(base2,año,channels):
lista=[]
df = pd.DataFrame()
for h in año:
for i in range(1,53):
filtro=base2[base2.Year.isin([h]) & base2.Channel.isin(channels) & base2.Week.isin([i])]
filtro = filtro[filtro['Description'].str.contains('[a-z]*|[a-z]*'.join(word),case=False)]
filtro["Date"] = pd.to_datetime(filtro["Date"])
a=filtro.groupby("Date",as_index=False)[targets].mean()
lista.append(a)
df["Year"]=h
df["Week"]=i
df=df.append(lista,ignore_index=True)
return (df)
我得到的输出是:
Year Week Date rat %
0 2020.0 52.0 2018-12-31 0.000000
1 2020.0 52.0 2019-01-01 0.000000
2 2020.0 52.0 2019-01-02 0.000000
3 2020.0 52.0 2019-01-03 0.000000
4 2020.0 52.0 2019-01-04 0.130000
.. ... ... ... ...
1 NaN NaN 2020-01-12 0.000000
0 NaN NaN 2020-02-01 0.066667
0 NaN NaN 2020-02-08 0.000000
0 NaN NaN 2020-02-15 0.035000
0 NaN NaN 2020-02-29 0.000000
如您所见,date和rat%列很好,但是year列将我放在2020年初(即2019年),而按照i的星期表示,则仅将最后一个是52,并在2020年的“日期”数据中用NaN填充它们,输出应为:
Year Week Date rat %
0 2019.0 1.0 2018-12-31 0.000000
1 2019.0 2.0 2019-01-01 0.000000
2 2019.0 3.0 2019-01-02 0.000000
3 2019.0 4.0 2019-01-03 0.000000
4 2019.0 5.0 2019-01-04 0.130000
.. ... ... ... ...
1 2020.0 1.0 2020-01-12 0.000000
0 2020.0 2.0 2020-02-01 0.066667
0 2020.0 3.0 2020-02-08 0.000000
0 2020.0 4.0 2020-02-15 0.035000
0 2020.0 5.0 2020-02-29 0.000000
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)