【发布时间】:2020-12-18 05:54:21
【问题描述】:
我有两个表格/csv 文件。表 1 只有一列,采用日期格式。表 2 有客户 ID、加入和离开日期。我想在第一张表中列出每天的所有活跃客户。如 Table2.Join date
使用 Pandas 我做了以下事情,如果可能的话,我正在寻找一种改进它的方法,或者在 SQL 中实现它:
# Create a new column
Table1['active_customers'] = Table1.date
for index, date in Table1.iterrows():
Table1.active_customers[index] = Table2.loc[(Table2.date_joined <= date) \\
& ((Table2.date_left > date) |
Table2.date_left.isnull())].user
表格如下:
Table 1
date
2010-12-09
2015-04-12
2018-10-27
Table 2
user date_joined date_left
uid1 2006-01-09 2011-10-26
uid2 2008-05-18 2013-04-19
uid3 2010-11-29 2016-07-01
uid4 2011-09-16 2011-12-09
uid5 2013-11-17
uid6 2015-05-31
uid7 2019-06-20
Output:
date active_users
2010-12-09 uid1, uid2, uid3
2015-04-12 uid3, uid5
2018-10-27 uid5, uid6
【问题讨论】:
-
您将需要提供一些实际示例数据和所需输出的示例。我不确定“...所有现有客户的列表”是什么意思?
-
@Manakin 问题被标记为
postgresql。 -
感谢@AdrianKlaver
-
样本数据很好,但您也应该指定预期的结果。
-
感谢您的警告。我添加了更多数据和预期输出
标签: sql pandas postgresql