在Python中,将偶数行列的值添加到奇数行

在Python中,将偶数行列的值添加到奇数行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个Python中的pandas数据帧,看起来像这样: for i in range(0, len(df), 2): df.loc[df.index[i], 'col2'] += df.loc[df.index[i+1], 'col2'] 我想将偶数行(alpha2和beta2)的col2的值添加到相应的奇数行(alpha和beta)中。因此,我希望删除偶数行以获得以下数据帧: 我的代码(添加值)当前如下所示: for i in range(0, len(df), 2):

我有一个Python中的pandas数据帧,看起来像这样:

for i in range(0, len(df), 2):
    df.loc[df.index[i], 'col2'] += df.loc[df.index[i+1], 'col2']

我想将偶数行(alpha2和beta2)的col2的值添加到相应的奇数行(alpha和beta)中。因此,我希望删除偶数行以获得以下数据帧:

我的代码(添加值)当前如下所示:

for i in range(0, len(df), 2):
    df.loc[df.index[i], 'col2'] += df.loc[df.index[i+1], 'col2']

有更聪明的方法吗?

选项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
试试这个
df.groupby(df.index//2.col2.sum()
df.groupby(np.arange(len(df))//2.col2.sum()-更为健壮,因为它也适用于非数字索引。。。