У меня есть DataFrame df1 , который имеет годовой столбец и цифровые столбцы. Значения года в DF1 не являются уникальными. Я хотел бы нормализовать числовые столбцы df1 на годовом уровне, используя определенную функцию. Для этой цели у меня есть еще один DataFrame df2 , который имеет столбец года, и с теми же числовыми столбцами, что и в df1 . Чтобы сделать перенормировку, я хочу разделить все числовые столбцы в определенный год с df2 за этот год. Я уверен, что есть «умный» способ выполнения той же процедуры. < /p>
import pandas as pd
df1 = pd.DataFrame({
'year': [1, 1, 0, 0],
'B': [4, 2, 1, 5],
'C': [5, 3, 2, 6],
'D': ["Good 1", "Good 2", "Good 1", "Good 2"]
})
df1
[OUTPUT]
year B C D
0 1 4 5 Good 1
1 1 2 3 Good 2
2 0 1 2 Good 1
3 0 5 6 Good 2
df2 = pd.DataFrame({'year': [1, 0], 'B': [3, 5], 'C': [4, 7]})
vars_to_replace = ['B', 'C']
# WORKS
for year in df1.year.unique():
df1.loc[ df1.year == year, vars_to_replace] /= df2.loc[year]
df1
[OUTPUT]
year B C D
0 1 0.800000 0.714286 Good 1
1 1 0.400000 0.428571 Good 2
2 0 0.333333 0.500000 Good 1
3 0 1.666667 1.500000 Good 2
< /code>
Код достигает того, что я хочу, но я не слишком доволен тем, что необходимо использовать для петли. Я пробовал другие альтернативы, но не могу заставить это работать. Есть идеи? Я попробовал следующий подход, но он не работает, потому что df1 не уникален в год.
df1.set_index(
keys = "year",
inplace = True,
drop = True
)
df2.set_index(
keys = "year",
inplace = True,
drop = True
)
df1.loc[:, vars_to_replace] /= df2
< /code>
Последние команды возвращают «valueError: невозможно reindex на оси с дублирующимися метками» < /p>
Примечание: после изучения вопросов и ответов, касающихся Эта тема на SO, я был не в состоянии найти случай, который охватывает многоцелевую операцию, в которой индексы (год в df1 в моем примере) не являются уникальный.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -dataframe
Панды - более разумный способ разделить некоторые столбцы на DataFrame на другой DataFrame ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Панды - более разумный способ разделить некоторые столбцы на DataFrame на другой DataFrame
Anonymous » » в форуме Python - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Панды - более разумный способ разделить некоторые столбцы на DataFrame на другой DataFrame
Anonymous » » в форуме Python - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Панды - более разумный способ разделить некоторые столбцы на DataFrame на другой DataFrame
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Есть ли разумный способ объединить два DataFrame на основе критериев подстроки?
Anonymous » » в форуме Python - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-