У меня есть следующий код, где в части «фильтр» я фильтрую программу по каналу и году, а при группировке делаю среднее значение за день по столбцу, откуда берется рейтинг.
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()]
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
Как вы можете видеть, столбцы даты и rat% в порядке, но столбец года помещает меня в начало 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
Подробнее здесь: https://stackoverflow.com/questions/634 ... nd-columns
Списки и столбцы Python ⇐ Python
Программы на Python
1767131140
Anonymous
У меня есть следующий код, где в части «фильтр» я фильтрую программу по каналу и году, а при группировке делаю среднее значение за день по столбцу, откуда берется рейтинг.
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
Как вы можете видеть, столбцы даты и rat% в порядке, но столбец года помещает меня в начало 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
Подробнее здесь: [url]https://stackoverflow.com/questions/63477219/python-lists-and-columns[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия