我已经成功地从df1中的数据创建了一个计数表
df1 = pd.DataFrame({'A':['yes','yes','yes','yes','no','no','yes','yes','yes','no'],
'B':['yes','no','no','no','yes','yes','no','yes','yes','no'],
'C':['no','yes','yes','no','yes','no','no','no','yes','no']})
通过使用以下命令:
df1.groupby(['A','B','C']).size().reset_index().rename(columns={0:'count'})
我得到了如下的计数表:
--+--+--+--+--+--+--+--+--+--+--+
index A B C count
0 no no no 1
1 no yes no 1
2 no yes yes 1
3 yes no no 2
4 yes no yes 2
5 yes yes no 2
6 yes yes yes 1
--+--+--+--+--+--+--+--+--+--+--+
然而,A,B,C的可能值是{yes','no},这意味着所有可能的 组合应等于2*2*2=8。我无法尽可能得到确切的答案 因为我的数据不包括所有的情况。预期输出应 具体如下:
--+--+--+--+--+--+--+--+--+--+--+
index A B C count
0 no no no 1
1 no yes no 1
2 no no yes 0 <-- count = 0 because it does not exist in my data
3 no yes yes 1
4 yes no no 2
5 yes no yes 2
6 yes yes no 2
7 yes yes yes 1
--+--+--+--+--+--+--+--+--+--+--+
此外,我的数据中可能缺少值。例如,具有 缺少的值是以下代码:
df2 = pd.DataFrame({'A':['yes','yes','yes','yes','no','no','yes','yes','*','no'],
'B':['yes','*','no','no','yes','yes','no','yes','yes','no'],
'C':['no','yes','*','no','yes','no','no','no','yes','no']})
因此,我的数据(缺少值)如下所示
--+--+--+--+--+--+--+--+
index A B C
0 yes yes no
1 yes * yes
2 yes no *
3 yes no no
4 no yes yes
5 no yes no
6 yes no no
7 yes yes no
8 * yes yes
9 no no no
--+--+--+--+--+--+--+--+
其中*表示缺少的值。在这种情况下,我仍然希望创建我的计数表 包含所有可能的情况(类似于第二个表)。在这种情况下,我需要忽略 至少缺少一个值(索引=1、2和8)的任何行。因此, 预期的输出应该是这样的。你知道吗
--+--+--+--+--+--+--+--+--+--+--+
index A B C count
0 no no no 1
1 no yes no 1
2 no no yes 0 <-- count = 0 because it does not exist in my data
3 no yes yes 1
4 yes no no 2
5 yes no yes 0 <-- count = 0 because of missing value in row 2
6 yes yes no 2
7 yes yes yes 0 <-- count = 0 because of missing value in row 1 and 8
--+--+--+--+--+--+--+--+--+--+--+
你能给我一些建议吗?如何克服保险范围问题和价值缺失问题? 先谢谢你。你知道吗
让我先回答你的保险问题。你知道吗
第一步是生成具有所有可能性的数据帧。为此,我从笛卡尔积创建了一个多索引,并重置了索引(就像您所做的那样):
第二步使用
combine_first
将结果与分组的数据帧(我在下面称之为df
)相结合。问题是combine_first
是按索引工作的,所以我必须首先重新索引这两个数据帧。你知道吗我找到的最简单(如果不是最优雅的)解决方案是将列
A
、B
和C
的串联设置为索引:现在我们可以使用
combine_first
,将临时索引放在末尾:结果是:
在获得groupby的大小之后,可以添加一个reindex
相关问题 更多 >
编程相关推荐