python列表和列的问题

问题描述

您好,我有以下代码,在“过滤器”部分中,我按频道和年份对程序进行过滤,并与分组依据一起得出收视率所在列的每日平均值。

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 (将#修改为@)