WedX - журнал о программировании и компьютерных науках

Как создать новый столбец на основе совпадающих значений в двух разных фреймах данных?

У меня есть два фрейма данных:

df1 (строка для каждого события, происходящего в игре)

Date Game Event Type Player Time
02/28/10 USA vs Canada Faceoff Sidney Crosby 20:00
02/28/10 USA vs Canada Pass Drew Doughty 19:59
02/28/10 USA vs Canada Pass Scott Niedermayer 19:42
02/28/10 USA vs Canada Shot Sidney Crosby 18:57
02/28/10 USA vs Canada Takeaway Dany Heatley 18:49
02/28/10 USA vs Canada Shot Dany Heatley 18:02
02/28/10 USA vs Canada Shot Sidney Crosby 17:37

df2

Player
Sidney Crosby
Dany Heatley
Scott Niedermayer
Drew Doughty

Как создать новый столбец в df2, который соответствует столбцу Player в каждом кадре данных и подсчитывает каждую строку, где тип события в df1 — Shot?

Это результат, который я бы искал в этом примере:

Player Shots
Sidney Crosby 2
Dany Heatley 1
Scott Niedermayer 0
Drew Doughty 0

Я новичок в Python, поэтому прошу прощения, если мне не хватает простого ответа. Благодарю вас!


  • Что вы пробовали до сих пор? Пример кода всегда хорош. Попросите других помочь найти ошибку в вашем коде, а не писать код для себя. 10.02.2021
  • @ex4 Мои извинения! Я новичок в сообществе. Я пробовал разные вещи, но не получил того, что хотел. Я обязательно опубликую, какой код я пробовал, когда возникнет мой следующий вопрос! 11.02.2021
  • Не беспокойтесь и добро пожаловать в Stack Overflow. В SO есть система, в которой более опытные пользователи просматривают первые сообщения новых пользователей и помогают им следовать инструкциям. Ваш вопрос возник, когда я просматривал их. Вот почему комментарий. Здорово, что здесь появились новые активные пользователи. 11.02.2021

Ответы:


1

Вы можете отфильтровать df1 для shot, а затем подсчитать значение:

shots = df1.loc[df1['Event Type']=='shot', 'Player'].value_counts()

df2['shots'] = df2['Player'].map(shots)
# or using reindex with `fill_value` option
# shots.reindex(df2['Player'], fill_value=0).values

Бонус: используйте crosstab и merge, чтобы получить всю статистику сразу:

df2.merge(pd.crosstab(df1['Player'], df1['Event Type']),
          on='Player', how='left')
10.02.2021
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]