首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在df中找到其他科尔中包含的两个日期之间的max和min值。

在df中找到其他科尔中包含的两个日期之间的max和min值。
EN

Stack Overflow用户
提问于 2022-08-31 14:58:40
回答 2查看 27关注 0票数 0

我有一只熊猫df (前25排)。

{“开始日期”:{时间戳(“2007-07-02 00:00:00”):NaT,时间戳(“2007-07-03:00:00”):NaT,时间戳(“2007-07-05 00:00:00”):时间戳(‘2007-07-05 00:00:00“),时间戳(’2007-07-06: 00:00:00'):NaT,时间戳(‘2007-07-09 00:00:00”):NaT,时间戳(’2007-07-000:00:00‘):NaT,时间戳(“2007-07-11:00:00:00”):NaT,时间戳(“2007-07-12 00:00:00”):时间戳(“2007-07-12 00:00:00”),时间戳(“2007-07-13 00:00:00”):NaT,时间戳(‘2007-07-16 00:00:00:00“):NaT,时间戳(’2007-07-17 00:00:00”):时间戳(‘2007-07-17 00:00:00:00“)时间戳(“2007-07-18:00:00:00”):NaT,时间戳(“2007-07-19 00:00:00”):NaT,时间戳(“2007-07-20 00:00:00”):NaT,时间戳(‘2007-07-23:00:00:00“):NaT,时间戳(’2007-07-24:00:00:00”):NaT,时间戳(‘2007-07-25:00:00:00“):NaT,时间戳(’2007-07-26 00:00:00:00”):NaT,时间戳(“2007-07-27:00:00”):NaT,时间戳(“2007-07-30:00:00”):NaT,时间戳(‘2007-07-31:00:00:00“):NaT},'endDate':{时间戳(’2007-07-02:00:00:00”):NaT,时间戳(‘2007-07-03 00:00:00'):NaT,时间戳(’2007-07-05 00:00:00'):时间戳(‘2007-07-16 00: 00:00:00'),时间戳(“2007-07-06:00:00:00”):NaT,时间戳(“2007-07-09:00:00:00”):NaT,时间戳(“2007-07-10:00:00:00”):NaT,时间戳(‘2007-07-11:00:00:00“):NaT,时间戳(’2007-07-12:00:00:00”):时间戳(‘2007-07-25 00:00:00“),时间戳(’2007-07-13 00: 00:00:00'):NaT,时间戳(“2007-07-16:00:00:00”):NaT,时间戳(“2007-07-17:00:00:00”):时间戳(“2007-07-30 00:00:00”),时间戳(“2007-07-18 00:00:00:00”):NaT,时间戳(‘2007-07-19 00:00:00:00“):NaT,时间戳(’2007-07-2000:00:00”):NaT(‘2007-07-23 00:00:00:00“):NaT,时间戳(“2007-07-24:00:00:00”):NaT,时间戳(“2007-07-25 00:00:00”):NaT,时间戳(‘2007-07-26:00:00:00“):NaT,时间戳(’2007-07-27:00:00:00”):NaT,时间戳(‘2007-07-30:00:00:00“):NaT,时间戳(’2007-07-31:00:00:00”):NaT},‘’Value1 1‘:{时间戳(’2007-07-02 00:00:00'):112.9156,时间戳(‘2007-07-03 00:00:00'):113.3248,时间戳(’2007-07-05 00:00:00:00“):113.2057,时间戳(‘2007-07-06 00:00:00:00”):113.8009,时间戳(’2007-07-09: 00:00:00'):113.8157,时间戳(‘2007-07-10: 00:00:00'):112.2684,时间戳(“2007-07-11:00:00:00”):113.0644,时间戳(“2007-07-12 00:00:00”):114.8497,时间戳(‘2007-07-13:00:00:00“):115.1919,时间戳(’2007-07-16:00:00:00”):115.1771,时间戳(‘2007-07-17: 00:00:00'):115.1175,时间戳(’2007-07-18:00:00:00“):114.9093,时间戳(“2007-07-19:00:00:00”):115.3556,时间戳(“2007-07-20:00:00:00”):114.1877,时间戳(‘2007-07-23:00:00:00“):114.5373,时间戳(’2007-07-24:00:00:00”):112.5511,时间戳(‘2007-07-25: 00:00:00'):112.7817,时间戳(’2007-07-26:00:00:00“):110.1111,时间戳(“2007-07-27 00:00:00”):107.9464,时间戳(“2007-07-30 00:00:00”):109.6351,时间戳(‘2007-07-31:00:00:00“):108.4002}

指数'Date‘是dt,是连续的每日数据。我还有另外两个dt cols,'startDate‘和'endDate’。对于' startDate‘和' endDate’中的每一行,即!= NaT,我需要在startDate和endDate之间找到'Value1‘的最大值和最小值。每个'startDate‘和'endDate’都在索引中。

我无法删除NaT,否则会丢失可能包含最大值/分钟的行。

我该怎么做?

EN

回答 2

Stack Overflow用户

发布于 2022-08-31 15:06:31

尝试:

代码语言:javascript
运行
复制
df.apply(lambda row: df.loc[row['startDate'] : row['endDate'], 'Value1'].max(), 
         axis=1)

对于min,只需将max替换为min即可。

票数 0
EN

Stack Overflow用户

发布于 2022-09-01 19:59:35

我回答了我自己的问题。为所有的文字和格式道歉,但可能对某人有帮助:

  1. 将基于事件的startDate和endDate数据保存在一个独立的df (' df ')中,df(‘df’)中包含要搜索max/min.

的连续数据。

  1. 执行搜索排序,并为df中的两个端点获取相应的df2值。s1 = dfT.reindex(np.searchsorted(df2['entryDate'], df['Date'], side='right')-1) s2 = dfT.reindex(np.searchsorted(df2['exitDate'], df['Date'], side='right')-1)

这会产生每个事件的唯一索引,但分布在df.中的所有行中。

  1. 删除s1和s2中的索引,并将两个事件索引连接起来。s1 = s1.reset_index() s1 = pd.concat([s1, s2], axis=1)

  1. 确定索引在哪里相同。这些日期在事件启动日期窗口之外的连续数据中,应该被删除。s1'sameIDX‘= np.where(( s1 'entryIdx’== s1'exitIdx'),1,0) s1= s1[(s1'sameIDX‘== 0)]

  1. 将s1与连续数据(df).

连接起来

  1. Groupby 'uniqueIdx‘获得最大/分钟低点=s1.群比(’uniqueIdx‘).min().min()Value1’mins=Value1

  1. 与事件df一起添加max/mins到事件中。df2 = pd.concat( df2,lows,axis=1) df2= pd.concat(df2,highs,axis=1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73557896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档