[英]How to get a value from another column based on the value of one column in an efficient way?
[英]How to get the value of one column based on another column value
我有一个包含4列的数据集。 我想获取每个col1
和col3
的time
列的最后一个条目,对于col1 = 1
最后一个条目是2018-05-01 23:34:00
和对于col1 = 2
最后一个条目是2018-05-01 05:48:00
看看最后一个条目和倒数第二个条目之间的差异(例如col1 = 1
是2018-04-30 01:58:00
)是否大于24小时。 这也是col2=2
的兴趣。
如果是这样,我想在价值col2
对应到最后和倒数第二个条目,并在更改值col2
,对应于第二到的时候最后一个条目,以null
。
这是部分数据:
time col1 col2 col3
2018-04-29 02:12:00 1 50 3
2018-04-30 01:58:00 1 40 3
2018-05-01 23:34:00 1 11 3
2018-04-29 02:02:00 2 10 4
2018-05-01 05:48:00 2 25 4
我想要的输出是:
col1 col2 col3
1 [11, Null] 3
2 [25, Null] 4
如何过滤col2中的值,并使它像上面给定的我最初拥有的4列一样?
这可能会有所帮助..
>>> df
time col1 col2 col3
0 2018-04-29 02:12:00 1 50 3
1 2018-04-30 01:58:00 1 40 3
2 2018-05-01 23:34:00 1 11 3
3 2018-05-01 05:48:00 2 10 4
4 2018-04-29 02:02:00 2 25 4
我们可以得到每个col1
分组的最后一次出现,如下所示。
>>> df.groupby(['col1'], as_index=False).last()
col1 time col2 col3
0 1 2018-05-01 23:34:00 11 3
1 2 2018-05-01 05:48:00 25 4
现在,我们可以将其存储为变量last_diff
以便以后进行比较。
>>> last_diff = df.groupby(['col1'], as_index=False).last()
现在我们可以使用pd.DateOffset
计算pd.DateOffset
,然后根据比较pd.DateOffset
寻找24小时以上的时间来获取布尔值exp,它将返回True
或False
..
>>> last_diff['time_diff'] = (last_diff['time'] + pd.DateOffset(days=0)).dt.hour > 24
>>> last_diff
col1 time col2 col3 time_diff
0 1 2018-05-01 23:34:00 11 3 False
1 2 2018-05-01 05:48:00 25 4 False
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.