根据键值删除日期在所需日期点之前的行

新手上路,请多包涵

我有一个 pd.dataframe 看起来像这样:

 key_value     date
value_01   2017-01-13
value_01   2018-02-17
value_01   2018-04-02
value_01   2018-05-13
value_01   2018-05-16
value_02   2017-01-18
value_02   2018-03-13
value_02   2018-04-01
value_02   2018-05-16
value_02   2018-05-22
value_03   2018-01-13
value_03   2018-04-14

所以现在基于 key_value

我想删除所有在 2018-04-01 之前具有日期列值的行

我想要这样的最终输出:

  key_value     date
value_01   2018-04-02
value_01   2018-05-13
value_01   2018-05-16
value_02   2018-04-01
value_02   2018-05-16
value_02   2018-05-22
value_03   2018-04-14

原文由 user9996043 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 662
2 个回答

您可以使用布尔索引过滤您的数据框。这里没有分组操作。请记住首先将您的系列转换为 datetime

 df['date'] = pd.to_datetime(df['date'])

res = df[~(df['date'] < '2018-04-01')]

print(res)

   key_value       date
2   value_01 2018-04-02
3   value_01 2018-05-13
4   value_01 2018-05-16
7   value_02 2018-04-01
8   value_02 2018-05-16
9   value_02 2018-05-22
11  value_03 2018-04-14

原文由 jpp 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于未来的旁路者,这里有一个使用索引的简单解决方案。

 idx_names = df_bulbr[df_bulbr.disconnected_time =='1970-01-01 00:00:00'].index
df_bulbr.drop(idx_names, inplace=True)
df_bulbr.reset_index()

原文由 Jayron Soares 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题