Python 如何使用Pandas查找两个不同日期时间之间的最小值?
Python 如何使用Pandas查找两个不同日期时间之间的最小值?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,(不重复/我的问题完全不同) 我的dataframe如下所示: # [df2] is day based time time2 2017-01-01, 2017-01-01 00:12:00 2017-01-02, 2017-01-02 03:15:00 2017-01-03, 2017-01-03 01:25:00 2017-01-04, 2017-01-04 04:12:00 2017-01-05, 2017-01-
(不重复/我的问题完全不同)
我的dataframe
如下所示:
# [df2] is day based
time time2
2017-01-01, 2017-01-01 00:12:00
2017-01-02, 2017-01-02 03:15:00
2017-01-03, 2017-01-03 01:25:00
2017-01-04, 2017-01-04 04:12:00
2017-01-05, 2017-01-05 00:45:00
....
# [df] is minute based
time value
2017-01-01 00:01:00, 0.1232
2017-01-01 00:02:00, 0.1232
2017-01-01 00:03:00, 0.1232
2017-01-01 00:04:00, 0.1232
2017-01-01 00:05:00, 0.1232
....
我想在[df2]
中创建一个名为time\u val\u min
的新列,该列在df2['time2']
和df2['time2']
中指定的范围内,查找df2['time']
和df2['time2']
之间的min
值
我做了什么?
我做了df2['time\u val\u min']=df[df['time'].dt.hour.between(df2['time'],df2['time'])].min()
,但它不起作用
您能告诉我如何修复它吗?您可以在日期合并两个数据帧,并过滤时间:
# create the date from the time column
df['date'] = df['time'].dt.normalize()
# merge
new_df = (df.merge(df2, left_on='date', # left on date
right_on='time', # right on time, if time is purely beginning of days
how='right',
suffixes=['','_y'])
.query('time < time2')
.groupby('date')
['time'].min()
.to_frame(name='time_val_min')
.merge(df2, right_on='time', left_index=True)
)
您可以在日期合并两个数据框,并过滤时间:
# create the date from the time column
df['date'] = df['time'].dt.normalize()
# merge
new_df = (df.merge(df2, left_on='date', # left on date
right_on='time', # right on time, if time is purely beginning of days
how='right',
suffixes=['','_y'])
.query('time < time2')
.groupby('date')
['time'].min()
.to_frame(name='time_val_min')
.merge(df2, right_on='time', left_index=True)
)
df
和df2
有多长?df
是从2017
到2018
的基于分钟的数据集,同样地df2
是从2107
到2018
的每日数据集。然而,我们不需要迭代所有的df
,因为它取决于df2
的范围df
和df2
有多长?df
是从2017
到2018
的基于分钟的数据集,同样df2
是从2107
到2018
的每日数据集。然而,我们不需要迭代所有df
,因为它取决于df2
的范围。我需要time\u val\u min
列,它是time
和time2
之间的最小值。我还需要min
值:)我需要time\u val\u min
列,它是time
和time2
。我还需要min
值:)