У меня есть 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
< /code>
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
< /code>
df2 = pd.DataFrame({'year': [1, 0], 'B': [3, 5], 'C': [4, 7]})
vars_to_replace = ['B', 'C']
< /code>
This works:
for year in df1.year.unique():
df1.loc[df1.year == year, vars_to_replace] /= df2.loc[year]
df1
< /code>
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>
The code achieves what I want but I'm not too happy with having to use for-loops. I've tried other alternatives but can't make it work. Any ideas? I've tried the following approach but it doesn't work because df1
df1.set_index("year", inplace=True)
df2.set_index("year", inplace=True)
df1.loc[:, vars_to_replace] /= df2
< /code>
The last commands returns a "ValueError: cannot reindex on an axis with duplicate labels"
NOTE: after doing research on the questions and answers concerning this topic on SO, I was unable to find a case that covers a multicolumn operation where the indexes (year in df1
У меня есть DataFrame df1 , который имеет столбец года и цифровые столбцы. Значения года в DF1 не являются уникальными. Я хотел бы нормализовать числовые столбцы DF1 на годовом уровне, используя определенную функцию. Для этого у меня есть еще один DataFrame DF2 , который имеет столбец года, и с теми же числовыми столбцами, что и в df1 . Чтобы сделать перенормировку, я хочу разделить все числовые столбцы в определенный год с DF2 за этот год. Есть «умный» способ выполнения той же процедуры. < /p> [code]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 < /code> 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 < /code> df2 = pd.DataFrame({'year': [1, 0], 'B': [3, 5], 'C': [4, 7]})
vars_to_replace = ['B', 'C'] < /code> This works: for year in df1.year.unique(): df1.loc[df1.year == year, vars_to_replace] /= df2.loc[year]
df1 < /code> 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> The code achieves what I want but I'm not too happy with having to use for-loops. I've tried other alternatives but can't make it work. Any ideas? I've tried the following approach but it doesn't work because df1[/code] не уникаль в год. [code]df1.set_index("year", inplace=True) df2.set_index("year", inplace=True) df1.loc[:, vars_to_replace] /= df2 < /code> The last commands returns a "ValueError: cannot reindex on an axis with duplicate labels" NOTE: after doing research on the questions and answers concerning this topic on SO, I was unable to find a case that covers a multicolumn operation where the indexes (year in df1[/code] в моем примере) не уникальны.
У меня есть DataFrame df1 , который имеет годовой столбец и цифровые столбцы. Значения года в DF1 не являются уникальными. Я хотел бы нормализовать числовые столбцы df1 на годовом уровне, используя определенную функцию. Для этой цели у меня есть еще...
У меня есть DataFrame df1 , который имеет столбец года и цифровые столбцы. Значения года в DF1 не являются уникальными. Я хотел бы нормализовать числовые столбцы DF1 на годовом уровне, используя определенную функцию. Для этого у меня есть еще один...
У меня есть DataFrame df1 , который имеет столбец года и цифровые столбцы. Значения года в DF1 не являются уникальными. Я хотел бы нормализовать числовые столбцы DF1 на годовом уровне, используя определенную функцию. Для этого у меня есть еще один...
есть фрейм данных Polars. Я проделывал некоторые манипуляции, после которых значения столбцов представляли собой списки некоторых типов данных, таких как список str или список int. Я хочу, чтобы эти столбцы были str или int. в этих списках есть...
В настоящее время я работаю с некоторыми номерами телефонов DataFrames, и мне нужно объединить их по критериям подстроки, и это должно быть левое слияние (то есть иметь все комбинации в случае, если совпадений более 1). >
Например, эти 2 DataFrame:...