【问题标题】:pandas: how to generate a new column to get another column's value of last date-timepandas:如何生成新列以获取另一列的最后日期时间值
【发布时间】:2020-05-01 17:29:17
【问题描述】:

我有一个如下的数据框:

obj_id   data_date   value
4        2010-11-01  59500    
2        2011-10-01  35200 
4        2012-07-31  24860   
1        2013-07-28  15860
2        2014-10-15  200200

如何生成一个新列来记录对象的最后时间值?如果一个对象之前没有出现过,它应该将默认值设置为0。输出应该是这样的:

obj_id   data_date   value    last_value
4        2010-11-01  59500    0
2        2011-10-01  35200    0
4        2012-07-31  24860    59500
1        2013-07-28  15860    0
2        2014-10-15  200200   35200

【问题讨论】:

    标签: python python-3.x pandas dataframe time-series


    【解决方案1】:

    你需要groupby().shift()

    df['last_value'] = df.groupby('obj_id')['value'].shift(fill_value=0)
    

    输出:

       obj_id   data_date   value  last_value
    0       4  2010-11-01   59500           0
    1       2  2011-10-01   35200           0
    2       4  2012-07-31   24860       59500
    3       1  2013-07-28   15860           0
    4       2  2014-10-15  200200       35200
    

    【讨论】:

    • 酷。我以前没用过shift。但我可以看到它的好处
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2015-06-23
    相关资源
    最近更新 更多