繁体   English   中英

如何基于另一列值获取一列的值

[英]How to get the value of one column based on another column value

我有一个包含4列的数据集。 我想获取每个col1col3time列的最后一个条目,对于col1 = 1最后一个条目是2018-05-01 23:34:00和对于col1 = 2最后一个条目是2018-05-01 05:48:00看看最后一个条目和倒数第二个条目之间的差异(例如col1 = 12018-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,它将返回TrueFalse ..

>>> 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM