我有以下的
我有以下代码,根据每个id值在df中有多少行来将a_id和b_id分配为-1;如果a_id或b_id的值恰好与id的某个特定值具有相同的行/子数据框,则这些a_id和b_id的行会得到-1。
因此,结果数据框将如下所示:
我在想是否有更有效率的方法来做这件事。
df
,id a_id b_id
1 25 50
1 25 50
2 26 51
2 26 51
3 25 52
3 28 52
3 28 52
我有以下代码,根据每个id值在df中有多少行来将a_id和b_id分配为-1;如果a_id或b_id的值恰好与id的某个特定值具有相同的行/子数据框,则这些a_id和b_id的行会得到-1。
cluster_ids = df.loc[df['id'] > -1]['id'].unique()
types = ['a_id', 'b_id']
for cluster_id in cluster_ids:
rows = df.loc[df['id'] == cluster_id]
for type in types:
ids = rows[type].values
match_rows = df.loc[df[type] == ids[0]]
if match_rows.equals(rows):
df.loc[match_rows.index, type] = -1
因此,结果数据框将如下所示:
id a_id b_id
1 25 -1
1 25 -1
2 -1 -1
2 -1 -1
3 25 -1
3 28 -1
3 28 -1
我在想是否有更有效率的方法来做这件事。