Python 分组多个索引并添加分组键
我在.csv中设置了数据,如下所示,我想使用python创建group by并添加一列作为内部id 输入文件 输出文件必须是新的.csv文件Python 分组多个索引并添加分组键,python,python-3.x,pandas,csv,dataframe,Python,Python 3.x,Pandas,Csv,Dataframe,我在.csv中设置了数据,如下所示,我想使用python创建group by并添加一列作为内部id 输入文件 输出文件必须是新的.csv文件 您可以使用熊猫和: 请详细说明到目前为止您尝试了什么,以及您遇到了哪些问题希望得到帮助。对不起,我是python新手。我做了“df.groupby('name')”,得到了带有名称分组的输出,但实际我想做的是带有3列的groupby,即“name”、“city”、“country”。然后为同一组添加内部_id,就像我提到的输出文件一样。你能用一个pytho
您可以使用熊猫和:
请详细说明到目前为止您尝试了什么,以及您遇到了哪些问题希望得到帮助。对不起,我是python新手。我做了“df.groupby('name')”,得到了带有名称分组的输出,但实际我想做的是带有3列的groupby,即“name”、“city”、“country”。然后为同一组添加内部_id,就像我提到的输出文件一样。你能用一个python代码示例来指导我吗?谢谢!!
unq_id name city country supplier
053 ABC CAL UA sup_01
054 DEF NY UA sup_01
055 ABC CAL UA sup_02
056 ABC CAL UA sup_03
057 DEF NY UA sup_02
internal_id unq_id supplier
001 053 sup_01
001 055 sup_02
001 056 sup_03
002 054 sup_01
002 057 sup_02
import pandas as pd
# read file
df = pd.read_csv('file.csv')
# define key columns
key_cols = ['name', 'city', 'country']
# convert to integer category codes
df['cat'] = df[key_cols].apply(tuple, axis=1).astype('category').cat.codes
# add one, convert to string, and format
df['cat'] = (df['cat'] + 1).apply(str).str.zfill(3)
# filter columns
res = df[['cat', 'unq_id', 'supplier']]
# output result to csv
res.to_csv('file_out.csv', index=False)
print(res)
cat unq_id supplier
0 001 53 sup_01
1 002 54 sup_01
2 001 55 sup_02
3 001 56 sup_03
4 002 57 sup_02