#python #pandas #input #percentage
#python #pandas #ввод #процент
Вопрос:
Я пытаюсь сделать то, что мне кажется сложным. Было бы очень здорово, если бы кто-нибудь мог помочь мне с этой мультиоперацией. Во-первых, у меня есть фрейм данных ‘df’, который отслеживает статистику сотен учетных записей пользователей веб-сайта. Столбец «Учетная запись» содержит имя учетной записи, столбец «Пользователи» содержит количество пользователей под каждой учетной записью, и есть двенадцать столбцов «Вход в систему (месяц)», которые отслеживают количество входов в систему для каждой учетной записи.
Пример df:
Account Users Logins in January Logins in February Logins in March Logins in April
Nike 148 68 94 72 87
Adidas 654 134 192 248 324
Apple 43 23 40 32 29
Tesla 864 651 598 691 439
Я бы хотел, чтобы пользователь этой операции ввел месяц, например, март. Затем ячейка вернет процентное изменение логинов с февраля по март в формате фрейма данных. Что-то вроде этого:
Ввод:
Please input Month: (This is where the user type in the month in interest)
Вывод:
Account Logins in February Logins in March Percentage Change (%)
Nike 94 72 -23
Adidas 192 248 29
Apple 40 32 -20
Tesla 598 691 16
Еще раз спасибо! Я действительно ценю любую помощь в этом!
Ответ №1:
Используйте pandas.DataFrame.filter
с pct_change
:
input_ = "Mar"
df2 = df.set_index("Account").filter(regex="Feb|%s" % input_).copy()
df2["Percentage Change (%)"] = df2.pct_change(axis=1).iloc[:, -1].mul(100).round()
print(df2)
Вывод:
Logins in February Logins in March Percentage Change (%)
Account
Nike 94 72 -23.0
Adidas 192 248 29.0
Apple 40 32 -20.0
Tesla 598 691 16.0
Комментарии:
1. Спасибо за ваш ответ! Часть с процентным изменением работает действительно хорошо. Тем не менее, я бы также хотел, чтобы df2 отображал столбец Account. Есть ли какой-либо способ сделать это? Я ценю вашу помощь!
2. @MatthiasGallagher Я отредактировал, чтобы отразить изменение 😉
3. Еще раз спасибо за редактирование! Я понял, что на выходе получается массив, а не фрейм данных, и что имена столбцов не выровнены. Это тоже можно исправить? Очень признателен!!
4. @MatthiasGallagher Как вы получили массив? какая строка произвела это? кроме того, для выравнивания, это потому, что индекс имеет имя account . Если вы хотите, чтобы он вел себя как столбец, попробуйте
df2.reset_index()
5. Проблема решена. Это строка печати (df2). Большое вам спасибо за вашу помощь!