python - Pandas DataFrame Groupby 获取唯一行条件并识别增加值直至组数

标签 python pandas

我有一个 DataFrame,其中列值的组合标识一个唯一地址(A、B、C)。我想识别所有此类行并为它们分配一个唯一标识符,我会根据地址递增该标识符。

例如

A B C D E
0 1 1 0 1
0 1 2 0 1
0 1 1 1 1
0 1 3 0 1
0 1 2 1 0
0 1 1 2 1

我想生成以下内容

A B C D E  ID
0 1 1 0 1  0
0 1 2 0 1  1
0 1 1 1 1  0
0 1 3 0 1  2
0 1 2 1 0  1
0 1 1 2 1  0

我尝试了以下方法:

id = 0
def set_id(df):
    global id
    df['ID'] = id
    id += 1


df.groupby(['A','B','C']).transform(set_id)

这将返回一个 NULL 数据框......这绝对不是这样做的方式......我是 Pandas 的新手。上面实际上应该使用 df[['A','B','C']].drop_duplicates() 来获取所有唯一值 谢谢。

最佳答案

我想这就是你需要的:

df2 = df[['A','B','C']].drop_duplicates() #get unique values of ABC
df2 = df2.reset_index(drop = True).reset_index()  #reset index to create a column named index
df2=df2.rename(columns = {'index':'ID'}) #rename index to ID
df = pd.merge(df,df2,on = ['A','B','C'],how = 'left') #append ID column with merge

关于python - Pandas DataFrame Groupby 获取唯一行条件并识别增加值直至组数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713931/

相关文章:

python - 使用 Python 创建 2 人游戏

python - 如何将月份和年份数据绘制到条形图上?

python - 如何使用 Python Pandas 按列合并集合?

python - Pandas 使用日期和另一列合并两列

python - 从数据框中删除相似的字符串重复项

python - 在linux上运行autobahn python会出现异常。AttributeError : Router instance has no attribute 'broker'

python - 编码问题 : decode Quoted-Printable string in Python

python - 如何使用boto3获取我拥有的EBS快照列表?

python - 使用 Pandas 根据另一列的数据将列数据插入到另一列

python - 根据时间序列中的先前值和后续值将值替换为 NaN