我正在将一些代码从 R 翻译成 python。我想删除具有相同 ID 的对,只保留其中一个在数据框中。
此外,我不能按“id”删除重复项,因为我可能对同一个“id”有多个组合,这可能不是累积对 示例:
id value.x value.y
1: 100057 38953993985 38993095846
2: 100057 38993095845 38953993985
3: 100057 38993095845 38993095846
4. 100057 38993095846 38953993985
这是 R 代码:
res <- df[df[, .I[1], by = list(pmin(value.x, value.y), pmax(value.x, value.y))]$V1]
输入 df 看起来像这样:
> head(df)
id value.x value.y
1: 100011 38989281716 38996868028
2: 100011 38996868028 38989281716
3: 100019 38916115350 38994231881
4: 100019 38994231881 38916115350
5: 100031 38911588267 38993358322
6: 100031 38993358322 38911588267
输出应该是
> head(res)
id value.x value.y
1: 100011 38989281716 38996868028
2: 100019 38916115350 38994231881
3: 100031 38911588267 38993358322
请您参考如下方法:
你为什么不试试这个:
df['value'] = df.apply(lambda x: x['value.x'].astype(str) +x['value.y'].astype(str) if x['value.x']>x['value.y'] else x['value.y'].astype(str) +x['value.x'].astype(str) , axis = 1)
df.drop_duplicates(subset='value', keep='first', inplace=True)
id value.x value.y
0 100011 38989281716 38996868028
1 100011 38996868028 38989281716
2 100019 38916115350 38994231881
3 100019 38994231881 38916115350
4 100031 38911588267 38993358322
5 100031 38993358322 38911588267
id value.x value.y value
0 100011 38989281716 38996868028 3899686802838989281716
2 100019 38916115350 38994231881 3899423188138916115350
4 100031 38911588267 38993358322 3899335832238911588267
