在 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
使用 X
和 Y
创建掩码,并在每 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
解决方案的优势并不重要 X
和 Y
值的排序。
我正在尝试确定在 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
使用 X
和 Y
创建掩码,并在每 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
解决方案的优势并不重要 X
和 Y
值的排序。