比较单个数据帧中相同变量的 2 个值
Comparing 2 values of same variable in single dataframe
我有一个数据框如下:
Obs. ID Name type
1) 123 abc duplicate
2) 123 abc duplicate
3) 145 abc abc
4) 156 abc duplicate
5) 156 abc duplicate
如果 ID 相同,就像在 obs 中一样。 1 and 2 or 4 and 5 然后我想创建一个新变量 type=duplicate else type=vaule in Name variable(i.e abc)
df['Dup'] = df.ID.duplicated(keep=False).map({True: 'dup', False: 'single'})
df
Obs. ID Name Dup
0 1) 123 abc dup
1 2) 123 abc dup
2 3) 145 abc single
3 4) 156 abc dup
4 5) 156 abc dup
我们可以使用duplicated
with np.where
根据结果设置值:
df['type'] = np.where(df.duplicated('ID', False), 'Duplicate', 'Single')
print(df)
Obs. ID Name type
0 1) 123 abc Duplicate
1 2) 123 abc Duplicate
2 3) 145 abc Single
3 4) 156 abc Duplicate
4 5) 156 abc Duplicate
对于更新,您只需要一个简单的星期:
df['type'] = np.where(~df.duplicated('ID', False), df.Name, 'Duplicate')
print(df)
Obs. ID Name type
0 1) 123 abc Duplicate
1 2) 123 abc Duplicate
2 3) 145 abc abc
3 4) 156 abc Duplicate
4 5) 156 abc Duplicate
我有一个数据框如下:
Obs. ID Name type
1) 123 abc duplicate
2) 123 abc duplicate
3) 145 abc abc
4) 156 abc duplicate
5) 156 abc duplicate
如果 ID 相同,就像在 obs 中一样。 1 and 2 or 4 and 5 然后我想创建一个新变量 type=duplicate else type=vaule in Name variable(i.e abc)
df['Dup'] = df.ID.duplicated(keep=False).map({True: 'dup', False: 'single'})
df
Obs. ID Name Dup
0 1) 123 abc dup
1 2) 123 abc dup
2 3) 145 abc single
3 4) 156 abc dup
4 5) 156 abc dup
我们可以使用duplicated
with np.where
根据结果设置值:
df['type'] = np.where(df.duplicated('ID', False), 'Duplicate', 'Single')
print(df)
Obs. ID Name type
0 1) 123 abc Duplicate
1 2) 123 abc Duplicate
2 3) 145 abc Single
3 4) 156 abc Duplicate
4 5) 156 abc Duplicate
对于更新,您只需要一个简单的星期:
df['type'] = np.where(~df.duplicated('ID', False), df.Name, 'Duplicate')
print(df)
Obs. ID Name type
0 1) 123 abc Duplicate
1 2) 123 abc Duplicate
2 3) 145 abc abc
3 4) 156 abc Duplicate
4 5) 156 abc Duplicate