遇到这样一个需求,有一张表,要给这张表新增一个字段delta,delta的值等于每行的c1列的值减去上一行c1列的值。
我的解决方案,可以通过python的pandas的diff来实现,也可以通过sql来实现,如下
import pandas as pd srcTable = pd.read_csv('pos1.csv') print(srcTable) destTable = srcTable.loc[srcTable.tid == 1, ['ts1', 'ts2']].sort_values(by='ts1') destTable.columns = ['deltaTs1', 'deltaTs2'] destTable = destTable.diff() destTable = destTable.fillna(0) destTable['delay'] = destTable['deltaTs2'] - destTable['deltaTs1'] print(destTable)
出来的效果如下:
tid ts1 ts2 0 1 1500443161000 1500443161240 1 1 1500443162000 1500443162994 2 1 1500443163000 1500443163067 3 1 1500443164000 1500443164993 deltaTs1 deltaTs2 delay 0 0.0 0.0 0.0 1 1000.0 1754.0 754.0 2 1000.0 73.0 -927.0 3 1000.0 1926.0 926.0
若是用sql语句,我用的是mysql,自己构造行号rn
mysql> select main.t_id, main.ts1, ifnull(main.ts1-sub.ts1,0) deltaTs1, main.ts2, ifnull(main.ts2-sub.ts2,0) deltaTs2 from (SELECT t_id,ts1,ts2,(@r1 :=@r1 + 1) rn FROM pos1,(SELECT @r1 := 0) r where t_id=1 ORDER BY ts1) main left join (SELECT t_id,ts1,ts2,(@r2 :=@r2 + 1) rn FROM pos1,(SELECT @r2 := 0) r where t_id=1 ORDER BY ts1) sub on main.rn-1=sub.rn; +------+---------------+----------+---------------+----------+ | t_id | ts1 | deltaTs1 | ts2 | deltaTs2 | +------+---------------+----------+---------------+----------+ | 1 | 1500443161000 | 0 | 1500443161240 | 0 | | 1 | 1500443162000 | 1000 | 1500443162994 | 1754 | | 1 | 1500443163000 | 1000 | 1500443163067 | 73 | | 1 | 1500443164000 | 1000 | 1500443164993 | 1926 | +------+---------------+----------+---------------+----------+
测试数据如下
pos1.csv
1,1500443161000,1500443161240 1,1500443162000,1500443162994 1,1500443163000,1500443163067 1,1500443164000,1500443164993
CREATE TABLE `pos1` ( `t_id` int(11) DEFAULT NULL, `ts1` bigint(22) DEFAULT NULL, `ts2` bigint(22) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO pos1 VALUES (1, 1500443161000, 1500443161240); INSERT INTO pos1 VALUES (1, 1500443162000, 1500443162994); INSERT INTO pos1 VALUES (1, 1500443163000, 1500443163067); INSERT INTO pos1 VALUES (1, 1500443164000, 1500443164993);
貌似有些数据库有这种当前行减去上一行数据的函数,具体我没有研究过。有知道的朋友可以告诉我一下,我印象中像Sqlserver好像有。
标签:
pandas,sql
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“pandas or sql计算前后两行数据间的增值方法”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
20240901
20240901
- DzintraErliha-Dreamscape(2024)[24Bit-96kHz]FLAC
- 群星.1999-上华世纪国语总冠军4CD【上华】【WAV+CUE】
- 叶丽仪.1992-仙鹤神针电视剧原声音乐专辑【星传真】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 《51首热门当红歌曲 十大顶级发烧女声 3CD》[WAV+CUE][1.6GB]
- 《赵传 深受摇滚迷青睐的台湾音乐人 约定》[WAV+CUE][320MB]
- 《庄心妍 实力唱将 发烧音乐精选集》[WAV+CUE][380MB]
- [音展纪念碟]2006年《TAA台湾第十六届国际HI-ENDHI-FI音响展》2cd[WAV]
- 中国音乐地图之听见西藏山歌牧歌酒歌2020[WAV分轨]
- 王宏伟2017-永远的红飘带[太平洋影音][WAV+CUE]
- 费翔.1997-NOW现在【第一中国】【WAV+CUE】
- 新格合唱团.1981-我唱你和2辑(滚石新格民歌系列)【新格】【WAV+CUE】
- 陈柏宇.2011-QUINQUENNIUM【SONY】【WAV+CUE】
- 雨果唱片-《金唛系列-蔷薇依韵琼瑶》WAV
- 陈百强《凝望(2012华纳LPCD45限量版)[DMI]》[WAV整轨]