将多个行值添加到一行中,保持索引间隔与 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
我有一个包含多列 (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