我有以下数据帧
|----|----|
| A | B |
| a1 | b1 |
| a2 | b1 |
| a1 | b2 |
| a2 | b3 |
我想用BperA进行计数,得到以下结果:
^{pr2}$我通常用df.groupby([B])[A].count()
来做这件事,但在这种情况下,它有点像透视表,这让我很困惑
提前谢谢。在
更新日期:
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 20422 entries, 180 to 96430
Data columns (total 2 columns):
B 20422 non-null object
A 20422 non-null object
dtypes: object(2)
memory usage: 478.6+ KB
我正在处理df.groupby([B])[A].value_counts().unstack().stack(dropna=False).reset_index(name="Count")
:
|--|----|----|-------|
| | A | B | Count |
|0 | a1 | b1 | 1 |
|1 | a1 | b2 | 1 |
|2 | a1 | b3 | NaN |
|3 | a2 | b1 | 1 |
|4 | a2 | b2 | NaN |
|5 | a2 | b3 | 1 |
1)一种方法是对} 计算}与{}融合,得到所需的{}:
"A"
进行分组,并使用^{"B"
下元素的不同计数。然后将unstack
和{2)^{} 也提供了一个很好的替代方案,如果我们在堆叠后用
^{pr2}$np.NaN
替换零计数元素:两种方法都会产生:
编辑1:
要使分组键,
"A"
以某种格式显示(即保留第一个出现的项,同时用空字符串替换其余项)编辑2:
如果您希望
"A"
作为多索引DF
的一部分的单个健康单元格:您可以按两列分组并访问每个组的大小:
退货:
^{pr2}$但对于不存在的组合,它不会给出
NaN
。在相关问题 更多 >
编程相关推荐