Dodawanie sum kolumn do Pandas DataFrame


Mam DataFrame z wartościami liczbowymi. Jaki jest najprostszy sposób dodania wiersza (z podaną wartością indeksu) reprezentującego sumę każdej kolumny?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby dodać kolumnę
Total
, która jest sumą w całym wierszu:
df['Total'] = df.sum(axis=1)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby dodać wiersz z sumami kolumn:
df.loc['Total']= df.sum()
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Daje to sumę w wierszach i kolumnach:
import numpy as np
import pandas as pd
df = pd.DataFrame({'a': [10,20],'b':[100,200],'c': ['a','b']})df.loc['Column_Total']= df.sum(numeric_only=True, axis=0)
df.loc[:,'Row_Total'] = df.sum(numeric_only=True, axis=1)print(df) a b c Row_Total
0 10.0 100.0 a 110.0
1 20.0 200.0 b 220.0
Column_Total 30.0 300.0 NaN 330.0
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jednym ze sposobów jest utworzenie ramki DataFrame z sumami kolumn i użycie DataFrame.append (...). Na przykład:
import numpy as np
import pandas as pd
# Create some sample data
df = pd.DataFrame({"A": np.random.randn(5), "B": np.random.randn(5)})
# Sum the columns:
sum_row = {col: df[col].sum() for col in df}
# Turn the sums into a DataFrame with one row with an index of 'Total':
sum_df = pd.DataFrame(sum_row, index=["Total"])
# Now append the row:
df = df.append(sum_df)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zrobiłem to w ten sposób:
df = pd.concat([df,pd.DataFrame(df.sum(axis=0),columns=['Grand Total']).T])

spowoduje to dodanie kolumny sum dla każdego wiersza:
df = pd.concat([df,pd.DataFrame(df.sum(axis=1),columns=['Total'])],axis=1)

Przekręcenie obiektu
Series
(lub, w powyższej odpowiedzi,
dict
) z powrotem do ramki DataFrame, a następnie dodanie go, wydaje się trochę denerwujące, ale działa cel, powód.
Wygląda na to, że powinna to być po prostu metoda
DataFrame
- jak pivot_table ma margines.
Może ktoś zna łatwiejszy sposób.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Metodę
append
można użyć do dodania wiersza z tym samym indeksem co ramka danych do ramki danych. Na przykład:
df.append(pd.Series(df.sum(),name='Total'))
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

  • Oblicz sumę i przekonwertuj wynik na listę (oś = 1: suma wierszy, oś = 0: suma kolumn)
  • Dodaj wynik kroku 1 do istniejącej ramki dataFrame z nową nazwą

new_sum_col = list(df.sum(axis=1))
df['new_col_name'] = new_sum_col

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się