【发布时间】:2021-06-01 10:34:19
【问题描述】:
假设,我有以下简单的数据框。
d = {'Date': ['20/01/2019', '21/01/2019', '20/01/2019','21/01/2019', '21/01/2019' ,'20/01/2019','21/01/2019'],
'Customer': ['C1' ,'C2', 'C1', 'C3', 'C1', 'C2', 'C2'],
'Merchant':['M1', 'M1', 'M2', 'M1','M3', 'M1','M3']}
df = pd.DataFrame(data=d)
df
Date Customer Merchant
20/01/2019 C1 M1
21/01/2019 C2 M1
20/01/2019 C1 M2
21/01/2019 C3 M1
21/01/2019 C1 M3
20/01/2019 C2 M1
21/01/2019 C2 M3
考虑到客户与商家的组合,我想按Date 分组。
例如,C1(客户 1)在交易中出现了 3 次,但在三个不同的商家中出现了不同的日期。我想根据日期对客户 1 的出现进行分组,并将组合放入新列 Combination。同样适用于其他客户。然后我想计算客户列出的商家 (M1, M2, and M3) 的次数。这可以通过创建列Merchant_item 及其Frequency 来完成。另外,如果一行与另一行合并,我想删除第二个重复的行,如下所示。
Date Customer Merchant Combination Merchant_item Frequency
20/01/2019 C1 M1 {M1, M2} M1 3
21/01/2019 C2 M1 {M1, M3} M2 1
21/01/2019 C3 M1 {M1} M3 3
21/01/2019 C1 M3 {M3}
20/01/2019 C2 M3 {M3}
任何人都可以在 Python Pandas 中帮助解决这个问题吗?任何帮助表示赞赏!
【问题讨论】:
-
查看this 进行分组。当
M1在20/01/2019上仅列出2次时,您如何将M1频率作为值3?这部分没有意义。 -
当您看到组合列
M1出现3 次。{M1, M2}, {M1, M3}, {M1}。只计算该特定列中的出现次数。 -
频率计数与行中的其他数据无关。这没有任何意义。
-
好的。你能解释一下为什么它没有意义吗?
-
您想在第 2 行中对 M2 进行计数,但第 2 行仅包含有关 M1 和 M3 的数据。那么为什么要在第 2 行计算 M2 呢?