Общая строка данных панд

У меня есть dataframe, что-то вроде:

foo bar qux 0 a 1 3.14 1 b 3 2.72 2 c 2 1.62 3 d 9 1.41 4 e 3 0.58 

и я хотел бы добавить строку «total» в конец фрейма данных:

  foo bar qux 0 a 1 3.14 1 b 3 2.72 2 c 2 1.62 3 d 9 1.41 4 e 3 0.58 5 tot 15 9.47 

Я попытался использовать команду sum но в итоге у меня есть серия, которая, хотя я могу преобразовать обратно в Dataframe, не поддерживает типы данных:

 tot_row = pd.DataFrame(df.sum()).T tot_row['foo'] = 'tot' tot_row.dtypes: foo object bar object qux object 

Я хотел бы сохранить типы данных из исходного фрейма данных, так как мне нужно применить другие операции к общей строке, например:

 baz = 2*tot_row['qux'] + 3*tot_row['bar'] 

4 Solutions collect form web for “Общая строка данных панд”

Добавить итоговую строку с

 df.append(df.sum(numeric_only=True), ignore_index=True) 

Преобразование необходимо, только если у вас есть столбец строк или объектов.

Это немного хрупкое решение, поэтому я бы рекомендовал придерживаться операций с DataFrame. например.

 baz = 2*df['qux'].sum() + 3*df['bar'].sum() 

См. http://pandas.pydata.org/pandas-docs/stable/reshaping.html для полей = True. Это добавляет «Все», чтобы отобразить сумму строк и столбцов.

Альтернативный способ (проверен на Pandas 0.18.1):

 import numpy as np total = df.apply(np.sum) total['foo'] = 'tot' df.append(pd.DataFrame(total.values, index=total.keys()).T, ignore_index=True) 

Результат:

  foo bar qux 0 a 1 3.14 1 b 3 2.72 2 c 2 1.62 3 d 9 1.41 4 e 3 0.58 5 tot 18 9.47 

После этого мне помогли добавить общее количество столбцов и итоговую строку в кадр данных.

Предположим, что dft1 является вашим исходным фреймворком данных … теперь добавьте общий итог столбца и общую строку с помощью следующих шагов.

 from io import StringIO import pandas as pd #create dataframe string dfstr = StringIO(u""" a;b;c 1;1;1 2;2;2 3;3;3 4;4;4 5;5;5 """) #create dataframe dft1 from string dft1 = pd.read_csv(dfstr, sep=";") ## add a column total to dft1 dft1['Total'] = dft1.sum(axis=1) ## add a row total to dft1 with the following steps sum_row = dft1.sum(axis=0) #get sum_row first dft1_sum=pd.DataFrame(data=sum_row).T #change it to a dataframe dft1_sum=dft1_sum.reindex(columns=dft1.columns) #line up the col index to dft1 dft1_sum.index = ['row_total'] #change row index to row_total dft1.append(dft1_sum) # append the row to dft1 
  • Поворот кадра данных pandas с двойными значениями индекса
  • Самый быстрый способ сбросить дублированный индекс в Pandas DataFrame
  • Как сортировать столбцы dataframe на основе значений в нескольких строках?
  • Может ли pandas автоматически распознавать даты?
  • как объединить два кадра данных в python pandas
  • В чем разница между рядами pandas и одноколоночным DataFrame?
  • Обработка неизвестных значений для кодировки меток
  • Почему у меня нет xlrd?
  •  
    Interesting Posts for Van-Lav

    Что означает эта ошибка (используется SimpleHttpConnectionManager неправильно)?

    Tensorflow: Как заменить узел в графе вычисления?

    Python выполняет функцию в течение X секунд

    Pandon pandas: выберите столбцы со всеми нулевыми значениями в dataframe

    mysql отсутствует информация о саундтреке после запуска imdbpy2sql.py

    Возможно ли потребовать PyQt из setuptools setup.py?

    float64 с pandas to_csv

    Windows 8: `node-gyp rebuild` Состояние выхода 1 установка контекстуализируется как зависимость зомби

    Как оптимизировать эту итерацию изображения в numpy?

    Как реализовать эффективный бесконечный генератор простых чисел в Python?

    сложные объекты Python JSON (учет подкласса)

    Убедитесь, что запущен только один экземпляр класса

    Отчет об успешном обратном вызове Python DeferredList, когда отсрочка вызывает ошибку

    Каковы правильные значения использования / параметра для HoughCircles в OpenCV для обнаружения Iris?

    Как настроить Atom для запуска скриптов Python3?

    Python - лучший язык программирования в мире.