首页 > 解决方案 > 熊猫:如果列符合条件,则添加行

问题描述

数据框

id            beg                       end     
guest1     2021-10-21 17:00:00       2021-10-21 18:00:00            
guest2     2021-10-21 10:00:00       2021-10-22 10:00:00       

我想测试

如果客户恰好出现一次并且乞求和结束不是同一天,那么请喜欢(guest1)。 col1得到 2021-10-21 00:00:00 而col2得到beg

如果客户恰好出现一次并且乞求和结束是同一天,那么请喜欢(guest2)。

id               beg                   end                        col1                col2
guest1     2021-10-21 17:00:00   2021-10-21 18:00:00        2021-10-21 00:00:00   2021-10-21 17:00:00     
guest1     2021-10-21 17:00:00   2021-10-21 18:00:00        2021-10-21 18:00:00   2021-10-21 23:59:59
guest2     2021-10-21 10:00:00    2021-10-22 11:00:00      2021-10-21 00:00:00    2021-10-21 10:00:00

标签: pythonpandas

解决方案


您可以使用 value_counts、可调用索引和 isin 来过滤您的数据以仅包含单行数据,并使用另一个可调用索引根据您超过 1 天的条件过滤您的数据。

df[df['id'].isin(df['id'].value_counts().loc[lambda x: x==1].index)].loc[lambda x: x['end'] - x['beg'] > pd.Timedelta('1 days')]

推荐阅读