Панды: суммировать только выбранные значения в одном столбце - PullRequest
0 голосов
/ 25 июня 2018

У меня есть следующий набор данных:

    Data   Quantity   Price  
0   P1     1          5   
1   P2     1          7
2   P3     2          3
3   P4     1          3
4   Total  5          18

Я хочу суммировать только P1, P2 и P3 в приведенном выше кадре данных, а не P4 и Total.Это можно сделать несколькими строками кода, но как это сделать, используя pandas.DataFrame.sum.В настоящее время я работаю с таким набором данных из тысяч строк (прибл.).Будем благодарны за любые ссылки.

Я видел условную сумму в других ссылках, но не смог найти решение этой проблемы.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

В случае, если столбцы, которые должны быть выбраны (например, P1, P2 и P3), имеют большее количество, чем столбцы, которые не должны быть выбраны, то написание выше будет многострочной задачей (для выбора сотен столбцов и почти незначительное количество столбцов, которые не должны быть выбраны). Правильный подход будет:

Количество (столбцы, которые нужно выбрать) >> Количество (столбцы, которые не должны быть выбраны)

s = df1.loc[~df1['Data'].isin(['Total','P4']),['Quantity','Price']].sum()
print (s)

Используя следующий код, добавляет строку с именем «Всего» в конец кадра данных

df1.loc['Total_without_P4'] = pd.Series(df1.loc[~df1['Data'].isin(['Total','P4']),['Quantity','Price']].sum() , index=['Quantity','Price'])

Вывод будет:

                    Data   Quantity   Price  
0                   P1     1          5   
1                   P2     1          7
2                   P3     2          3
3                   P4     1          3
4                   Total  5          18
Total_without_P4           4          15
0 голосов
/ 25 июня 2018

Используйте boolean indexing или query с выбранными столбцами и sum:

s = df.loc[df['Data'].isin(['P1','P2','P3']), ['Quantity','Price']].sum()

Или:

s = df.query('Data == ["P1", "P2", "P3"]')[['Quantity','Price']].sum()

print (s)
Quantity     4
Price       15
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...