【问题标题】:Python - Datetime column from one Dataframe and find datetime range from another dataframePython - 来自一个数据帧的日期时间列并从另一个数据帧中查找日期时间范围
【发布时间】:2019-07-02 04:17:54
【问题描述】:

我是 Python 新手,这是我的第一个问题。

我有 df1: DF1:

period  id  cust_id product_id  start_time  end_time
20181001    1   aa  2   01/10/2018 19:04    01/10/2018 19:31
20181001    1   zz  9   01/10/2018 15:57    01/10/2018 16:00
20181001    1   zz  178 01/10/2018 13:01    01/10/2018 13:36
20181001    1   zz  231 02/10/2018 02:51    02/10/2018 02:51

df2:(查表)

PERIOD  product_id  Name    Product_info    START_TIME  END_TIME
20181001    2   Xab GHI 01/10/2018 19:00    01/10/2018 19:29
20181001    2   Xab QQQ 01/10/2018 19:30    01/10/2018 19:59
20181001    2   Xab asd 01/10/2018 20:00    01/10/2018 20:29
20181001    9   S2  Angele  01/10/2018 14:00    01/10/2018 14:59
20181001    9   S2  Road    01/10/2018 15:00    01/10/2018 15:59
20181001    9   S2  Flash   01/10/2018 16:00    01/10/2018 16:59
20181001    9   S2  Simpson 01/10/2018 17:00    01/10/2018 17:29
20181001    178 T3  Chase   01/10/2018 13:00    01/10/2018 13:59
20181001    178 T3  Chase   01/10/2018 14:00    01/10/2018 14:59
20181001    178 T3  Elaine  01/10/2018 15:00    01/10/2018 15:59

我需要 DF1 的结果如下: 结果DF1:

period  id  cust_id product_id  start_time  end_time    Product_info    Name
20181001    1   aa  2   01/10/2018 19:04    01/10/2018 19:31    GHI Xab
20181001    1   aa  2   01/10/2018 19:04    01/10/2018 19:31    QQQ Xab
20181001    1   zz  9   01/10/2018 15:57    01/10/2018 16:00    Road    S2
20181001    1   zz  9   01/10/2018 15:57    01/10/2018 16:00    Flash   S2
20181001    1   zz  178 01/10/2018 13:01    01/10/2018 13:36    Chase   T3
20181001    1   zz  231 02/10/2018 02:51    02/10/2018 02:51    None    None

DF1 和 DF2 都是有很多行的大表。请帮我解决问题。

我也在添加表格的图像。enter image description here

提前致谢。

【问题讨论】:

  • 很不清楚你想要什么。例如,为什么在您的数据框中,当在源数据框中我们有 id=1 表示 aa 和 if=2 表示 zz 时,所有值的 id 现在都是一个。请详细了解您通过查找实际尝试完成的任务。
  • 您好,我想将两个表与产品 id 以及日期和时间在另一个表的范围内时合并。正如我之前提到的,这两个表对 pd.merge 来说确实很大。

标签: python pandas datetime


【解决方案1】:

看起来您想要merge 您的两个 DataFrame,但您没有给出任何标准。目前尚不清楚您为什么要排除某些条目。

请参阅here,了解如何组织问题以便我们提供最大的帮助。

df1.merge(df2[['product_id', 'Product_info', 'Name']], on='product_id', how='outer')

导致:

      period  id cust_id  product_id        start_time          end_time  \
0   20181001   1      aa           2  01/10/2018 19:04  01/10/2018 19:31
1   20181001   1      aa           2  01/10/2018 19:04  01/10/2018 19:31 
2   20181001   1      aa           2  01/10/2018 19:04  01/10/2018 19:31
3   20181001   1      zz           9  01/10/2018 15:57  01/10/2018 16:00
4   20181001   1      zz           9  01/10/2018 15:57  01/10/2018 16:00
5   20181001   1      zz           9  01/10/2018 15:57  01/10/2018 16:00
6   20181001   1      zz           9  01/10/2018 15:57  01/10/2018 16:00
7   20181001   1      zz         178  01/10/2018 13:01  01/10/2018 13:36
8   20181001   1      zz         178  01/10/2018 13:01  01/10/2018 13:36
9   20181001   1      zz         178  01/10/2018 13:01  01/10/2018 13:36
10  20181001   1      zz         231  02/10/2018 02:51  02/10/2018 02:51

   Product_info Name
0           GHI  Xab
1           QQQ  Xab
2           asd  Xab
3        Angele   S2
4          Road   S2
5         Flash   S2
6       Simpson   S2
7         Chase   T3
8         Chase   T3
9        Elaine   T3
10          NaN  NaN

您可以查看here 了解有关合并的更多信息。

【讨论】:

  • 感谢您的回答,但我不想直接合并产品 ID,这也取决于日期时间字段。
  • 那么你需要更好地将你的问题定义为你想要合并的内容
猜你喜欢
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
相关资源
最近更新 更多