我有一个pandas dataframe,想创建一个列min_date_after_ref_date
,它显示给定ref_date之后的最小日期。我有以下代码。
ref_date = datetime.strptime('2023-04-21 12:00', '%Y-%m-%d %H:%M')
df = pd.DataFrame({'id':[1,2,1,1,3], 'time_stamp': ['2023-04-19 12:05', '2023-04-21 12:45',
'2023-04-21 15:45', '2023-04-23 13:15', '2023-04-18 12:05']})
df = df.assign(time_stamp=pd.to_datetime(df.time_stamp))
df = df.assign(min_date_after_ref_date=df[df.time_stamp>ref_date].groupby('id').time_stamp.transform('min'))
我得到了这个
id time_stamp min_date_after_ref_date
0 1 2023-04-19 12:05:00 NaT
1 2 2023-04-21 12:45:00 2023-04-21 12:45:00
2 1 2023-04-21 15:45:00 2023-04-21 15:45:00
3 1 2023-04-23 13:15:00 2023-04-21 15:45:00
4 3 2023-04-18 12:05:00 NaT
但是我希望第一行也有2023-04-21 15:45:00
(而不是NaN
),这样对于每个id
,总是有相同的min_date_after_ref_date
值。我如何改变这一点?
1条答案
按热度按时间k97glaaz1#
如果条件为
False
,则使用Series.where
来设置NaT
:或者使用
Series.map
而不使用transform
: