Используйте значения строк из кадра данных pandas в качестве новой метки столбцов

Если у меня есть фрейм данных pandas, можно ли получить значения из строки и использовать его в качестве метки для нового столбца?

У меня есть что-то вроде этого:

| Team| DateTime| Score
| Red| 2021/03/19 | 5
| Red| 2021/03/20 | 10
| Blue| 2022/04/10 | 20

Я хотел бы записать эти данные в новый фрейм данных, который имеет:

Столбец команды

Колонка SumScore за год/месяц

Таким образом, у меня будет строка для каждой команды с несколькими новыми столбцами для месяца в году, которая содержит сумму очков за конкретный месяц. Это должно быть так:

Команда2021/032022/04
Красный150
Синий020

Время в формате даты ГГГГ/ММ/ДД.

Я надеюсь, что я ясно

создайте пример того, что вы хотите, неясно, хотите ли вы мультииндекс или нет

Yuca 06.05.2022 21:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
36
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ты можешь использовать

df = (df.assign(YM=df['DateTime'].str.rsplit('/', 1).str[0])
      .pivot_table(index='Team', columns='YM', values='Score', aggfunc='sum', fill_value=0)
      .reset_index())
print(df)

YM  Team  2021/03  2022/04
0   Blue        0       20
1    Red       15        0
Ответ принят как подходящий

Мы можем использовать pd.crosstab, что позволяет нам

Compute a simple cross tabulation of two (or more) factors

Ниже я изменил df['DateTime'], чтобы содержать только year/month.

df['DateTime'] = pd.to_datetime(df['DateTime']).dt.strftime('%Y/%m')
pd.crosstab(
    df['Team'],
    df['DateTime'],
    values=df['Score'],
    aggfunc='sum'
).fillna(0)

Если вам не нужны несколько уровней в индексе, просто используйте вызов метода reset_index в кросс-таблице, а затем отбросьте DateTime.

Другие вопросы по теме