tengo esta base de datos llamada db en 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 101050y quiero agregar los elementos de list1 a los elementos de db
list1 = [[player1,105,101,10300,10100],[player3,17,6,1100,1050]]entonces los resultados serían 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¿Cómo puedo hacerlo?
Puedes probar con add después de crear las columnas
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.0list1 = [['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 1050Solución 1:
Cree un marco de datos de list1 , luego concat con el marco de datos dado, luego agrupe por index y agregue las columnas restantes usando sum
df1 = pd.DataFrame(list1, columns=df.columns) df_out = pd.concat([df, df1]).groupby('index', sort=False).sum()Solución 2:
Cree un marco de datos de list1 y luego add con el marco de datos dado usando un index común
df1 = pd.DataFrame(list1, columns=df.columns) df_out = df.set_index('index').add(df1.set_index('index'), fill_value=0)Resultado:
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