在 pandas df 中添加值的有效方法

Efficient method to add values in a pandas df

我正在尝试确定在 pandas df 中添加特定值的更有效方法。

对于下面的 df,我想为 Area 中的每个 X + Y 添加 Value 中的 integers。因此,对于每个 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

使用 XY 创建掩码,并在每 2 个索引和 sum() 上使用 groupby,使用:

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

输出

   0    21
   1    51

boolean indexing to Series, create default index and 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

解决方案的优势并不重要 XY 值的排序。