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 - Django 如何保证中间件的 __init__ 只被调用一次?

python - 如何将多处理与多线程一起使用?

python - Pandas 日期时间索引选择

python - 为什么我在 matplotlib 中的绘图没有显示轴

python - 在单行中总结 pandas 数据框

python - 数据框中列上的 .map 出现 NaN 错误

python - 使用重试/取消对话框(在 GUI 线程中)检查 QThread 中的文件权限

python - 在 Elastic Beanstalk 上的 Docker 中部署时命令

python - 在数据库中的整数列中使用 Nan 将数据写入数据库

python - Pandas :从存储为列值的列表中创建新列