как перебрать несколько фреймов данных и добавить значения в новый фрейм данных в python - PullRequest
1 голос
/ 23 сентября 2019

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

df1 = pd.read_csv('values1.csv')
df2 = pd.read_csv('values2.csv')
df3 = pd.read_csv('values3.csv')
df4 = pd.read_csv('values4.csv')

каждый из них имеет следующую структуру: enter image description here

Я хочу создать новый фрейм данныхтакой, что он имеет агрегированные значения для каждой категории во всех фреймах данных.Таким образом, новый фрейм данных должен иметь значения, которые рассчитываются по формуле: -

Total['values'][0] = df1['values'][0] / (df1['values'][0] + df2['values'][0]  + df3['values'][0]  + df4['values'][0] )

Таким образом, он должен генерировать значения для всех строк.Может кто-нибудь, пожалуйста, помогите мне.

1 Ответ

1 голос
/ 23 сентября 2019

Сначала объедините все DataFrame с concat и агрегируйте sum для Series, а затем преобразуйте столбец category в индекс для Series из df1 и разделите на Series.div:

s = pd.concat([df1, df2, df3, df4]).groupby('category')['values'].sum()

out = df1.set_index('category')['values'].div(s).reset_index(name='total')

РЕДАКТИРОВАТЬ:

s = pd.concat([df1, df2, df3, df4]).groupby('category')['values'].sum()
s1 = pd.concat([df1, df2]).groupby('category')['values'].sum()

out = s1.div(s2).reset_index(name='new')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...