在pandas数据框中添加新的行,基于一个条件。

我有一个情况,我想在满足某个条件后添加一条新行。我的数据框架如下。

ID            Event          Date
1             A              2019-11-12
1             B              2019-11-13
1             C              2019-11-18
1             D              2019-11-20
2             A              2019-11-20
2             B              2019-11-20

当ID值从1变为2的时候,我想在这之间添加一条记录,事件列单元格应该包含 “today “作为事件名称,日期列应该包含今天的日期。事件列单元格应该包含 “today “作为事件名称,日期列应该有今天的日期。

输出结果应该是这样的。

 ID            Event          Date
 1             A              2019-11-12
 1             B              2019-11-13
 1             C              2019-11-18
 1             D              2019-11-20
 1             Today          2020-04-24
 2             A              2019-11-20
 2             B              2019-11-20

我应该如何实现这个功能?

解决方案:

如果需要在每个组之间添加新行,如果有变化使用。

df1 = (df[df['ID'].ne(df['ID'].shift(-1).ffill())]
       .assign(Event='today', 
               Date = pd.Timestamp.today().floor('d')))
print (df1)
   ID  Event       Date
3   1  today 2020-04-24

或。

df1 = (df.drop_duplicates('ID', keep='last')
         .iloc[:-1]
         .assign(Event='today', 
                 Date = pd.Timestamp.today().floor('d')))

print (df1)

   ID  Event       Date
3   1  today 2020-04-24

然后用排序索引值添加到原数据中。

df = df.append(df1).sort_index(kind='mergesort')
print (df)

   ID  Event       Date
0   1      A 2019-11-12
1   1      B 2019-11-13
2   1      C 2019-11-18
3   1      D 2019-11-20
3   1  today 2020-04-24
4   2      A 2019-11-20
5   2      B 2019-11-20

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何在管理器脚本中管理不同的武器?

2022-9-9 3:29:17

未分类

试图访问AWS服务时,不支持的记录版本未知-0.0除外。

2022-9-9 3:29:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索