Python 在Pandas中创建新列,其值对应于一对唯一的记录
我有一个包含两列整数的数据帧。我试图通过创建一个新列来标识记录的唯一对,该列是该记录对的唯一标识符。下面是我的数据示例 第1栏 第2栏 1. 2. 1. 2. 1. 3. 1. 4. 这里有一个方法:Python 在Pandas中创建新列,其值对应于一对唯一的记录,python,pandas,Python,Pandas,我有一个包含两列整数的数据帧。我试图通过创建一个新列来标识记录的唯一对,该列是该记录对的唯一标识符。下面是我的数据示例 第1栏 第2栏 1. 2. 1. 2. 1. 3. 1. 4. 这里有一个方法: df['Column 3'] = (df.groupby(['Column 1', 'Column 2']).cumcount() == 0).cumsum() 输出: Column 1 Column 2 Column 3 0 1 2 1
df['Column 3'] = (df.groupby(['Column 1', 'Column 2']).cumcount() == 0).cumsum()
输出:
Column 1 Column 2 Column 3
0 1 2 1
1 1 2 1
2 1 3 2
3 1 4 3
另一种方式:
df['Column 3'] = df.apply(tuple, axis=1).factorize()[0] + 1
第三种方式:
df['Column 3'] = (~df.duplicated(['Column 1', 'Column 2'])).cumsum()
谢谢你@shubhamsharan,第四条路:
df['Column 3'] = df.groupby(['Column 1', 'Column 2']).ngroup().add(1)
…今天我学到了!妙计!第四种方法是df.groupby(['Column 1','Column 2']).ngroup().add(1)
;-)