как суммировать один col с условием в другом col

#python #pandas #sum

#python #панды #сумма

Вопрос:

мне нравится суммировать «col1» в новую строку, только если name = в «A»

это df

 data={"col1":[2,3,4,5,7],
"col2":[4,2,4,6,4],
"col3":[7,6,9,11,2],
"col4":[14,11,22,8,5],
"name":["A","A","V","A","B"],
"n_roll":[8,2,1,3,9]}
df=pd.DataFrame.from_dict(data)
df
  

мне нравится, чтобы это было
так, поэтому последняя строка 2 3 5 =10

 data={"col1":[2,3,4,5,7,10],
"col2":[4,2,4,6,4,0],
"col3":[7,6,9,11,2,0],
"col4":[14,11,22,8,5,0],
"name":["A","A","V","A","B",0],
"n_roll":[8,2,1,3,9,0]}
df=pd.DataFrame.from_dict(data)
df
  

Ответ №1:

Вы можете установить значение с помощью loc :

 df.loc[len(df), "col1"] = df.loc[df["name"] == "A", "col1"].sum()
df.fillna(0)


   col1    col2 col3    col4    name    n_roll
0   2.0     4.0 7.0     14.0    A       8.0
1   3.0     2.0 6.0     11.0    A       2.0
2   4.0     4.0 9.0     22.0    V       1.0
3   5.0     6.0 11.0    8.0     A       3.0
4   7.0     4.0 2.0     5.0     B       9.0
5   10.0    0.0 0.0     0.0     0       0.0
  

Ответ №2:

Давайте попробуем append

 out = df.append(df.loc[df.name=='A',['col1']].sum().to_frame().T,sort=True)
   col1  col2  col3  col4  n_roll name
0     2   4.0   7.0  14.0     8.0    A
1     3   2.0   6.0  11.0     2.0    A
2     4   4.0   9.0  22.0     1.0    V
3     5   6.0  11.0   8.0     3.0    A
4     7   4.0   2.0   5.0     9.0    B
0    10   NaN   NaN   NaN     NaN  NaN