python - 如何获取一列的不同值的计数

标签 python pandas

我有一张这样的 table

DURATION  FLAG
1         1
1         1
1         1
1         0
1         0
2         1
2         1
2         0
2         0
2         0
3         1
3         0
3         0
3         0
3         0

FLAG 列只有两种值,即 1 和 0。我想计算 FLAG 的每个值的数量,结果如下

DURATION  FLAG_1_COUNT  FLAG_0_COUNT
1         3             2
2         2             3
3         1             4

怎样才能得到上面的结果。我尝试了以下代码,但没有返回正确的结果。

df.groupby(['DURATION', 'FLAG']).size().reset_index(name='count')

最佳答案

选项 1
str.get_dummies + sum -

df.set_index('DURATION').FLAG\
   .astype(str).str.get_dummies().sum(level=0)

          0  1
DURATION      
1         2  3
2         3  2
3         4  1

或者,与 pd.get_dummies 等效 -

pd.get_dummies(df.set_index('DURATION').FLAG).sum(level=0)

          0  1
DURATION      
1         2  3
2         3  2
3         4  1

对于列名称,您可以使用 add_*fix -

pd.get_dummies(df.set_index('DURATION').FLAG)\
     .sum(level=0).add_prefix('FLAG_').add_suffix('_COUNT')

          FLAG_0_COUNT  FLAG_1_COUNT
DURATION                            
1                    2             3
2                    3             2
3                    4             1

如果您需要重置索引,请使用reset_index -

i = df.set_index('DURATION').FLAG    
pd.get_dummies(i)\
  .sum(level=0)\
  .add_prefix('FLAG_')\
  .add_suffix('_COUNT')\
  .reset_index()

   DURATION  FLAG_0_COUNT  FLAG_1_COUNT
0         1             2             3
1         2             3             2
2         3             4             1
<小时/>

选项 2
groupby + value_counts + unstack

df.groupby('DURATION').FLAG.value_counts().unstack(-1)

FLAG      0  1
DURATION      
1         2  3
2         3  2
3         4  1

关于python - 如何获取一列的不同值的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47845672/

相关文章:

python - 计算 DataFrame 列中所有定义的值,其中另一列中的相应值在 pandas 中未定义

python - Nose 测试 - 文件上传

python - 将动态函数应用于相空间中的每个点(由二维矩阵表示)

Python pandas 循环值以两列为条件

python - Python 中改进的负二项式 GLM

python - 如何使用 pandas DataFrame 绘图函数为每个子图绘制一个 ylabel

python - 如何使用 pandas Groupby 将不同的聚合函数应用于同一列

python - 如何读取文件的第一行两次?

python - 如何使用 pandas 和 yahoo finance 获得 ' USDJPY'(货币汇率)?

python - 列的最大值和最小值之间的差异