为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas\Python:通过成对比较创建一个新的数据框

Pandas\Python:通过成对比较创建一个新的数据框

慕的地6264312 2023-08-03 16:35:13
我有一个示例数据框。df = pd.DataFrame({'time':['12:00','12:01','12:02','12:03','12:04','12:05','12:06','12:07'], 'begin':[6880,6930,6920,7095,7025,7300,7130,7110],                  'up':[7034,6995,7105,7105,7415,7420,7230,7195],'down':[6880,6845,6869,6885,6894,7090,7045,6990],'end':[6930,6920,7095,7025,7300,7130,7110,7055]})df = df.set_index('time')        begin   up      down    endtime                12:00   6880    7034    6880    693012:01   6930    6995    6845    692012:02   6920    7105    6869    709512:03   7095    7105    6885    702512:04   7025    7415    6894    730012:05   7300    7420    7090    713012:06   7130    7230    7045    711012:07   7110    7195    6990    7055算法:对于索引列的第一行和第二行time:(将与第一行相同)= 12:00对于列的第一行和第二行begin:(将是第一行的“开始”)new_begin = 6880对于列的第一行和第二行up: if 'up_row1' > 'up_row2': new_up = up_row1 else: up_row2对于列的第一行和第二行down: if 'down_row1' < 'down_row2': new_down = down_row1 else: down_row2对于列的第一行和第二行end:(将是第二行的“结束”)new_end = 6920对于第三行和第四行以及其他对行依此类推所以结果一定和这个一模一样        begin   up      down    endtime                12:00   6880    7034    6845    692012:02   6920    7105    6869    702512:04   7025    7420    6894    713012:06   7130    7230    6990    7055在此先感谢您的帮助!
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

您可以将groupby数据帧放在自定义的成对石斑鱼上,然后agg使用字典dct:


dct = {'time': 'first', 'begin': 'first',

       'up': 'max', 'down': 'min', 'end': 'last'}

df = df.reset_index().groupby(np.arange(len(df)) // 2).agg(dct).set_index('time')

       begin    up  down   end

time                          

12:00   6880  7034  6845  6920

12:02   6920  7105  6869  7025

12:04   7025  7420  6894  7130

12:06   7130  7230  6990  7055


查看完整回答
反对 回复 2023-08-03
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信