具有唯一groupby的新列将导致数据帧

问题描述

我有一个重复行('id')的数据框。

我想汇总数据,但首先需要对每个ID的唯一会话进行求和。

mypackage
    __init__.py
    mymodule.py

此代码运行良好,但是当我想将此新列'ncount'添加到我的数据框中时效果不佳。

CURR_DIR = dirname(realpath(__file__))
DEFAULT_SCHEMA_FILE = join(
    dirname(CURR_DIR),"default_files","default_schema1.csv"
)

def myfunc(schema = DEFAULT_SCHEMA_FILE):
    #do stuff with CSV

我尝试使用转换,但没有用。

id     session
123      X
123      X 
123      Y
123      Z
234      T
234      T

这是转换代码的结果(我的数据作为重复ID):

df['ncount'] = df.groupby('id')['session'].nunique().reset_index()

这是我感兴趣的结果:

df['ncount'] = df.groupby('id')['session'].transform('nunique')

解决方法

使用以下步骤:

1。将数据分组并存储在单独的变量中。

2。然后合并回到原始数据框。

代码:

import pandas as pd

df = pd.DataFrame({"id":[123,123,234,234],"session":["X","X","Y","Z","T","T"]})

x = df.groupby(["id"])['session'].nunique().reset_index() 

res = pd.merge(df,x,how="left",on="id")

print(res)

如果需要,您可以重命名列名。

,

使用.count()

步骤:

1:按“ id”对数据进行分组,然后计算id值的值

2:将索引格式的计数减少1并合并到两个数据帧

import pandas as pd

df = pd.DataFrame({"id":[123,"T"]})

uniq_df = df.groupby(["id"])["session"].count().reset_index()
uniq_df["session"] = uniq_df["session"] - 1

result = pd.merge(df,uniq_df,on="id")

print(result)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...