python pandas 分组统计多出一列

想要统计每个价格支付的人数,同一个价格下同一个用户即使支付了多次也算作1人次,如下,100的价格 有用户1000和2000,这样算作两个人

 user_price = [
            {'user_id':1000,'goods_price':100},
            {'user_id':1000,'goods_price':100},
            {'user_id':2000,'goods_price':100},
            {'user_id':1000,'goods_price':200},
            {'user_id':2000,'goods_price':100},
        ]
        user_df = pd.DataFrame(user_price)
        print(user_df.groupby(['goods_price','user_id'],as_index=False)['user_id'].count())

结果输出 多了1行

   goods_price  user_id
0          100        2
1          100        2
2          200        1

希望得到结果

   goods_price  user_id
0          100        2
1          200        1
阅读 2.7k
2 个回答

需要先去重,再分组统计

user_df.drop_duplicates().groupby(['goods_price'], as_index=False)['user_id'].count()

请参考:

import pandas as pd

user_price = [
    {
        'user_id': 1000,
        'goods_price': 100
    },
    {
        'user_id': 1000,
        'goods_price': 100
    },
    {
        'user_id': 2000,
        'goods_price': 100
    },
    {
        'user_id': 1000,
        'goods_price': 200
    },
    {
        'user_id': 2000,
        'goods_price': 100
    },
]

user_df = pd.DataFrame(user_price)
print(
    user_df.groupby(['goods_price'
                     ])['user_id'].nunique().reset_index(drop=False))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题