在Python中,将偶数行列的值添加到奇数行
我有一个Python中的pandas数据帧,看起来像这样:在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):
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()-更为健壮,因为它也适用于非数字索引。。。