Эффективный метод для добавления значений в панде df - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь определить более эффективный способ добавления определенных значений в pandas df.

Для df ниже я хочу добавить integers в Value для каждого X + Y в Area.Таким образом, для каждого X я хочу добавить это к следующему Y.

import pandas as pd

d = ({
    'Area' : ['X','Y','Z','X','Y','Z'],                                     
    'Value' : [10,11,20,21,30,31],                                     
     })

df = pd.DataFrame(data=d)

Если не так много значений, я могу выполнить их вручную следующим образом:

x = df.iloc[0] + df.iloc[1]

Но если df достаточно велико, это становится неэффективным.

Предполагаемый результат:

21
51

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Фильтр по boolean indexing до Series, создать индекс по умолчанию и Series.add:

s1 = df.loc[df['Area'].eq('X'), 'Value'].reset_index(drop=True)
s2 = df.loc[df['Area'].eq('Y'), 'Value'].reset_index(drop=True)

s = s1.add(s2)
print (s)
0    21
1    51
dtype: int64

Преимущество решения не имеет значения, упорядочениеX и Y значения.

0 голосов
/ 04 марта 2019

создайте маску с X и Y и groupby на каждые 2 индекса и sum(), используйте:

m=df[df.Area.isin(['X','Y'])].reset_index(drop=True)
print(m.groupby(m.index//2)['Value'].sum())

Выход

   0    21
   1    51
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...