у меня есть эта база данных под названием db в pandas
index win loss moneywin moneyloss
player1 5 1 300 100
player2 10 5 650 150
player3 17 6 1100 1050
player11 1010 105 10650 10150
player23 1017 106 101100 101050
и я хочу добавить элементы list1 к элементам db
list1 = [[player1,105,101,10300,10100],[player3,17,6,1100,1050]]
поэтому результаты будут db2
index win loss moneywin moneyloss
player1 110 102 10600 10200
player2 10 5 650 150
player3 34 12 2200 2100
player11 1010 105 10650 10150
player23 1017 106 101100 101050
как я могу это сделать?
Вы можете попробовать с add
после создания столбцов
s = pd.DataFrame(list1,columns=df.columns).set_index('index')
df = df.set_index('index')
df = df.add(s,fill_value=0)
df
Out[108]:
win loss moneywin moneyloss
index
player1 110.0 102.0 10600.0 10200.0
player11 1010.0 105.0 10650.0 10150.0
player2 10.0 5.0 650.0 150.0
player23 1017.0 106.0 101100.0 101050.0
player3 34.0 12.0 2200.0 2100.0
list1 = [['player1','105','101','10300','10100'],['player3','17','6','1100','1050']]
df.append(pd.DataFrame(list1,columns=df.columns)).sort_values(by=['index'])
index win loss moneywin moneyloss
0 player1 5 1 300 100
0 player1 105 101 10300 10100
3 player11 1010 105 10650 10150
1 player2 10 5 650 150
4 player23 1017 106 101100 101050
2 player3 17 6 1100 1050
1 player3 17 6 1100 1050
Решение 1:
Создайте фрейм данных из list1
, затем concat
его с заданным фреймом данных, затем сгруппируйте по index
и агрегируйте оставшиеся столбцы, используя sum
df1 = pd.DataFrame(list1, columns=df.columns)
df_out = pd.concat([df, df1]).groupby('index', sort=False).sum()
Решение 2:
Создайте фрейм данных из list1
, затем add
его с данным фреймом данных, используя общий index
df1 = pd.DataFrame(list1, columns=df.columns)
df_out = df.set_index('index').add(df1.set_index('index'), fill_value=0)
Результат:
print(df_out)
win loss moneywin moneyloss
index
player1 110 102 10600 10200
player2 10 5 650 150
player3 34 12 2200 2100
player11 1010 105 10650 10150
player23 1017 106 101100 101050
спасибо за ответ, это именно то, что я хотел, но это вызвало еще один вопрос ... что, если я хочу сделать сложную математическую формулу вместо простого добавления двух элементов, таких как среднее значение, дисперсия или какая-то другая формула? Есть ли предопределенная функция, такая как добавление, или есть способ настроить то, что я хочу сделать?