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)
回答不易,记得采纳呀。
我想要的是这种形式噢