python 根据id这一列新增一列,相同的id命名为一个数字,从0开始

python编程 根据id这一列新增一列,相同的id命名为一个数字,从0开始

import pandas as pd

df = pd.read_excel('data.xlsx')

df.insert(1,'rank',0)

kv={}
def setValue(v):
    if v not in kv:
        kv[v]=len(kv.keys())+1
    return kv[v]

df['rank']=df['id'].apply(setValue)

df.to_excel('result.xlsx', index=False)

回答引自chatgpt

import pandas as pd
# 读取包含'id'列的Excel表格
df = pd.read_excel('data.xlsx')
# 按照'id'列进行分组,并为每个分组中的元素编号
df['new_col'] = df.groupby('id').cumcount()
# 将新列添加到Excel表格中
df.to_excel('new_data.xlsx', index=False)

import pandas as pd

# 读取 excel 文件
data = pd.read_excel('data.xlsx')

# 根据 id 列进行分组,并为每个分组重置索引
data['num'] = data.groupby('id').ngroup()

# 将 num 列的数值减去各自分组的最小值,得到从 0 开始的编号
data['num'] = data.groupby('id')['num'].apply(lambda x: x - x.min())

# 保存结果到新的 excel 文件
data.to_excel('result.xlsx', index=False)

小魔女参考了bing和GPT部分内容调写:
使用python编程实现根据id这一列新增一列,相同的id命名为一个数字,从0开始,可以使用pandas库中的groupby函数。

首先,导入pandas库:

import pandas as pd

然后,读取数据:

data = pd.read_csv('data.csv')

接着,使用groupby函数,根据id这一列分组:

data_grouped = data.groupby('id')

最后,使用rank函数,将分组后的数据按照id这一列排序,并新增一列,从0开始:

data['rank'] = data_grouped['id'].rank(method='first')

最后,将排序后的数据保存:

data.to_csv('data_sorted.csv', index=False)

回答不易,记得采纳呀。

我想要的是这种形式噢

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632