我在Python中有一个pandas DataFrame看起来像这样:
我想将偶数行(alpha2和beta2)的col2值添加到相应的奇数行(alpha和beta)。因此,我想删除偶数行以获取以下DataFrame:
我的代码(添加值)目前如下所示:
for i in range(0, len(df), 2):
df.loc[df.index[i], 'col2'] += df.loc[df.index[i+1], 'col2']
有更聪明的方法吗?
答案 0 :(得分:2)
选项1
您可以执行groupby
并重新分配索引 -
v = df.groupby(df.index // 2).col2.sum()
v.index = df.col1[::2]
v.reset_index()
col1 col2
0 alpha 30
1 beta 70
礼貌MaxU,更好的方法是将np.arange
传递给groupby
-
df.groupby(np.arange(len(df)) // 2).col2.sum()
选项2
另一种方法是切片和分配 -
y = df.col2.values
v = pd.DataFrame({'col1' : df.col1.values[::2], 'col2' : y[::2] + y[1::2]})
v
col1 col2
0 alpha 30
1 beta 70