Сумма столбцов pandas данных с пустыми данными - PullRequest
0 голосов
/ 09 марта 2020

У меня есть фрейм данных с пробелами в. (Эти пробелы важны для более позднего применения). Например, мой фрейм данных выглядит так:

df = pd.DataFrame([])
df = df.append([['Variable A','',435.65]], ignore_index = True)
df = df.append([['Variable B',324,'']], ignore_index = True)
df = df.append([['Variable C','',300]], ignore_index = True)
df.columns = ['Type','DR','CR']

Я хотел бы найти общее количество столбцов, игнорируя пробелы. Я пробовал следующее:

print(df)    
print('TOTAL DR ',df['DR'].sum(numeric_only=True))
print('TOTAL CR ',df['CR'].sum(numeric_only=True))

Но я получаю сообщение об ошибке: Не реализована ошибка: Series.sum не реализует только цифры c

Как бы я go о получении итогов по столбцу? Спасибо за любую помощь

1 Ответ

0 голосов
/ 09 марта 2020

Вы не можете sum строк против целых чисел.

Анализируйте ваши '' записи как np.nan или просто 0, а затем делайте сумму.

>>> import pandas as pd
>>> df = pd.DataFrame([])
>>> df = df.append([['Variable A','',435.65]], ignore_index = True)
>>> df = df.append([['Variable B',324,'']], ignore_index = True)
>>> df = df.append([['Variable C','',300]], ignore_index = True)
>>> df.columns = ['Type','DR','CR']
>>>
>>>
>>> df
         Type   DR      CR
0  Variable A       435.65
1  Variable B  324
2  Variable C          300
>>>>>> import numpy as np
>>> df['DR'] = np.where(df['DR'] == '', [0],df['DR'])
>>> df
         Type   DR      CR
0  Variable A    0  435.65
1  Variable B  324
2  Variable C    0     300
>>> print('TOTAL DR ',df['DR'].sum())
TOTAL DR  324

Другой вариант - использовать pd.to_numeric перед суммированием.

>>> df = pd.DataFrame([])
>>> df = df.append([['Variable A','',435.65]], ignore_index = True)
>>> df = df.append([['Variable B',324,'']], ignore_index = True)
>>> df = df.append([['Variable C','',300]], ignore_index = True)
>>> df.columns = ['Type','DR','CR']
>>> print('TOTAL DR ',pd.to_numeric(df['DR']).sum())
TOTAL DR  324.0
>>> print('TOTAL DR ',pd.to_numeric(df['CR']).sum())
TOTAL DR  735.65
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...