我想建立基于从另一表中的值(和COUNTIFS)二维表()的基础上COUNTIF二维表。我管理这个成功使用Excel为原型,但我坚持两个概念:使用大熊猫建立“一个单独的第Excel表单
1. Emulating Excel COUNTIF() on pandas
2. Dynamically build a new dataframe
注:COUNTIF()需要一个范围和标准作为参数。例如,如果我有一个颜色列表,我想知道的时候“橙”的数量是在下面的列表:
A
Red
Orange
Blue
Orange
Black
,那么我会简单地使用下面的公式:
COUNTIF(A1:A5, "Orange")
这应返回2.
当然COUNTIF()的功能可以如形式示例变得更加复杂,在这种形式COUNTIF级联标准(范围1,条件1,范围2 2,条件2 ...)可以被解释为一个与criterian。例如,如果我在一个列表wantto女性的数量超过35个类似下面:
A B
Female 19
Female 40
Male 45
,那么我会简单地使用下面的公式:
COUNTIF(A1:A3, "Female", B1:B3, ">35"
这应返回1.
回到我的用例。这是源表:
Product No Opening Date Closing Date Opening Month Closing Month
0 1 2016-01-01 2016-06-30 2016-01-31 2016-06-30
1 2 2016-01-01 2016-04-30 2016-01-31 2016-04-30
2 3 2016-02-01 2016-06-30 2016-02-29 2016-06-30
3 4 2016-02-01 2016-05-31 2016-02-29 2016-05-31
4 5 2016-02-01 2099-12-31 2016-02-29 2099-12-31
5 6 2016-01-01 2099-12-31 2016-01-31 2016-10-31
6 7 2016-06-01 2016-07-31 2016-06-30 2016-07-31
7 8 2016-06-01 2016-11-30 2016-06-30 2016-11-30
8 9 2016-06-01 2016-07-31 2016-06-30 2016-07-31
9 10 2016-06-01 2099-12-31 2016-06-30 2099-12-31
这是我想要达到的二维矩阵:
2016-01-31 2016-02-29 2016-03-31 2016-04-30 2016-05-31 \
2016-01-31 3 3 3 2 2
2016-02-29 3 3 3 3 2
2016-03-31 0 0 0 0 0
2016-04-30 0 0 0 0 0
2016-05-31 0 0 0 0 0
2016-06-30 4 4 4 4 4
2016-07-31 0 0 0 0 0
2016-08-31 0 0 0 0 0
2016-09-30 0 0 0 0 0
2016-10-31 0 0 0 0 0
2016-11-30 0 0 0 0 0
2016-12-31 0 0 0 0 0
2016-06-30 2016-07-31 2016-08-31 2016-09-30 2016-10-31 \
2016-01-31 1 1 1 1 0
2016-02-29 1 1 1 1 1
2016-03-31 0 0 0 0 0
2016-04-30 0 0 0 0 0
2016-05-31 0 0 0 0 0
2016-06-30 4 2 2 2 2
2016-07-31 0 0 0 0 0
2016-08-31 0 0 0 0 0
2016-09-30 0 0 0 0 0
2016-10-31 0 0 0 0 0
2016-11-30 0 0 0 0 0
2016-12-31 0 0 0 0 0
2016-11-30 2016-12-31
2016-01-31 0 0
2016-02-29 1 1
2016-03-31 0 0
2016-04-30 0 0
2016-05-31 0 0
2016-06-30 1 1
2016-07-31 0 0
2016-08-31 0 0
2016-09-30 0 0
2016-10-31 0 0
2016-11-30 0 0
2016-12-31 0 0
基本上,我想通过时间来建立产品生存的矩阵。纵轴表示新产品的起源,而横轴表示这些帐户在多长时间内持续存在。
例如,如果10个产品是在1月推出,这个数字对于一月VS月份应该是10.如果这10种产品的1〜2月被关闭,这个数字对于一月二月VS应该9.如果所有剩余产品在六月被关闭,那么行一月VS六月,七月,八月,等应该是在二月,三月,四月0
产品开发等。不会影响到一月一行。
我管理使用以下Excel公式来构建2D矩阵:
=COUNTIF(Accounts!$D$2:$D$11,Main!$A2)-COUNTIFS(Accounts!$D$2:$D$11,Main!$A2, Accounts!$E$2:$E$11,"<="&Main!B$1)
(这将填充所述第一小区)
我最初的策略是建立一个多维列表,并使用数for循环来填充他们,但我不知道是否有一个更简单(或更多建议的方式)在熊猫。
非常理解,我设法学习一些技巧的。谢谢! –