Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 3, 2022 21:19:15

Xelar93
Зарегистрирован: 2022-08-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

Здравствуйте. Есть такая таблица исходных данных. Мне нужно посчитать сколько раз встречается Player1 в столбцах Player1 и Player2, и тоже самое для Player2 с построчным занесением этого числа в столбцы GP_1 и GP_2. но с условием за последние 60 дней от текущей строки. Без этого условия я сделал, а с ним не знаю как…Понимаю только что нужно наверно как-то смещать диапазон цикла чтобы он охватывал не всю таблицу, а только те значения которые подходят под мое условие. Буду рад если кто-то поможет. В примере показал как сделал такой расчет без каких-либо условий.

 def calculate_GP(GP_1,GP_2):
    
        diff_1=GP_1+1
        diff_2=GP_2+1
        return diff_1, diff_2
 
current_GP={}
for idx,row in df.iterrows():
    
    Player_1=row['Player1']
    Player_2=row['Player2']
    
    if Player_1 not in current_GP.keys():
        current_GP[Player_1]=0
    
    if Player_2 not in current_GP.keys():
        current_GP[Player_2]=0
        
    GP_1=current_GP[Player_1]
    GP_2=current_GP[Player_2]
    
    diff_1,diff_2=calculate_GP(GP_1,GP_2)
    
    current_GP[Player_1]=diff_1
    current_GP[Player_2]=diff_2
    
    df.loc[idx,'GP1']=GP_1
    df.loc[idx,'GP2']=GP_2

Отредактировано Xelar93 (Авг. 3, 2022 21:19:36)

Прикреплённый файлы:
attachment До.png (43,3 KБ)

Офлайн

#2 Авг. 3, 2022 21:33:36

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1348
Репутация: +  118  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

Xelar93
Есть такая таблица исходных данных.
конвертировать таблицу в csv, выложить файл сюда

вручную написать что нужно в результате

Офлайн

#3 Авг. 4, 2022 09:24:39

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

Что есть таблица? документ ексель или база даных?
В любом случае как сказали выше - формат таблицы и данных прикрепите



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#4 Авг. 4, 2022 13:21:44

Xelar93
Зарегистрирован: 2022-08-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

Код который скинул в первом сообщении добавляет два столбца GP1 и GP2 и выполняет соответствующий расчет. Я считаю сколько Player1 и Player2 сыграли матчей до текущей даты. Например значение GP1 в последней строке таблицы = 80. Это значит что игрок Rafael Nadal сыграл до этого 80 игр. А я хочу подсчитать сколько было сыграно игр, не за все время а только за прошлые 60 дней.

Отредактировано Xelar93 (Авг. 4, 2022 14:43:29)

Прикреплённый файлы:
attachment TennisGP.csv (499,3 KБ)

Офлайн

#5 Авг. 4, 2022 13:24:19

Xelar93
Зарегистрирован: 2022-08-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

P.S Смотреть этот файл

Прикреплённый файлы:
attachment Tennis_2010.rar (350,0 KБ)

Офлайн

#6 Авг. 4, 2022 19:45:37

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

я на телефоне - скачал запустил не понял
(ничо конечно не делал)
Вопрос то в чем?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Авг. 4, 2022 23:29:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9847
Репутация: +  853  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

Xelar93
Прикреплённый файлы:
attachment TennisGP.csv (499,3 KБ)
Да он вообще сохранён неправильно. Даже на поля не раскладывает.
Сначала получи правильный файл.

Xelar93
Прикреплённый файлы:
attachment Tennis_2010.rar (350,0 KБ)
Этот правильно раскладывается.

Xelar93
Есть такая таблица исходных данных. Мне нужно посчитать сколько раз встречается Player1 в столбцах Player1 и Player2, и тоже самое для Player2 с построчным занесением этого числа в столбцы GP_1 и GP_2. но с условием за последние 60 дней от текущей строки. Без этого условия я сделал, а с ним не знаю как…Понимаю только что нужно наверно как-то смещать диапазон цикла чтобы он охватывал не всю таблицу, а только те значения которые подходят под мое условие.
Xelar93
Код который скинул в первом сообщении добавляет два столбца GP1 и GP2 и выполняет соответствующий расчет. Я считаю сколько Player1 и Player2 сыграли матчей до текущей даты. Например значение GP1 в последней строке таблицы = 80. Это значит что игрок Rafael Nadal сыграл до этого 80 игр. А я хочу подсчитать сколько было сыграно игр, не за все время а только за прошлые 60 дней.
Ты сначала возьми подтаблицу, и когда она у тебя будет выделена за определённый период, в ней и будешь искать.
Сегодня тебе нужен один период, завтра понадобится другой, послезавтра - третий. Поэтому код должен быть один и тот же, а вот соответствующие таблицы этому коду должен поставлять другой код - код выбора подтаблиц.



Отредактировано py.user.next (Авг. 4, 2022 23:30:24)

Офлайн

#8 Авг. 5, 2022 10:27:39

Xelar93
Зарегистрирован: 2022-08-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

py.user.next
И как будет выглядеть такой код для выбора подтаблиц?

Офлайн

#9 Авг. 6, 2022 22:41:57

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1348
Репутация: +  118  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

  
import datetime
import pandas as pd
df = pd.read_csv('/home/xam/Загрузки/Tennis_2010.csv')
def count_games_player(df, player, date_start, date_end):
    """
    
    :param df: таблица
    :param player: имя игрока
    :param date_start: начальная дата откуда считать
    :param date_end: конечная дата (не входит в счет)
    :return: количество игр
    """
    def my_filter(value):
        date = datetime.datetime.strptime(value['Date'], '%m/%d/%Y').date()
        return datetime.date(*date_start) <= date < datetime.date(*date_end) \
               and (value['Player1'] == player or value['Player2'] == player)
    out_df = df[df.apply(lambda x: my_filter(x), axis=1)]
    return len(out_df)
 
if __name__ == '__main__':
    res = count_games_player(df, 'Rafael Nadal', (2010, 1, 2), (2010, 12, 31))
    print(res)
    res2 = count_games_player(df, 'Rafael Nadal', (2010, 1, 2), (2010, 3, 31))
    print(res2)

вывод
 
80
17

Process finished with exit code 0

Офлайн

#10 Авг. 8, 2022 10:19:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подсчет количества матчей по ходу сезона с условиями

xam1816
скажите, а зачем по-вашему нужна вот эта конструкция?

 if __name__ == '__main__':



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version