将多个行值添加到一行中,保持索引间隔与 python 中添加的行数相同

Adding multiple row values into one row keeping the index interval as same as the number of row added in python

我有一个包含多列 (30/40) 的数据框,时间序列从 1 分钟到 1440 分钟不间断。

df

time   colA  colB   colC.....
1        5    4      3
2        1    2      3
3        5    4      3
4        6    7      3
5        9    0      3
6        4    4      0
..

现在我想将两个行值合二为一,但我想保持索引 'time' 的间隔与我添加的行号相同。结果数据框是:

df

time  colA  colB  colC.......
1       6    6     6
3       11   11    6
5       13    4    3
..

此处我将两行值合二为一,但时间索引间隔也与两行相同。 1,3,5... 有可能实现吗?

一种方法是对所有人进行加法,然后确定时间:

df_new = df[1::2].reset_index(drop=True) + df[::2].reset_index(drop=True)
df_new['time'] = df[::2]['time'].values

另一种方法是将数据集每两行分组一次,并在 'colX' 列上使用 sum 并在时间列上使用 mean 进行聚合。链接 astype(int) 将舍入结果值:

d = {col: 'sum' for col in [c for c in df.columns if c.startswith('col')]}
df.groupby(df.index // 2).agg({**d,'time': 'mean'}).astype(int)

回印:

   colA  colB  colC  time
0     6     6     6     1
1    11    11     6     3
2    13     4     3     5