我有一个数据集,在同一行中有多个重复的值。这是数据的外观。
id datapoint11 datapoint12 datapoint21 datapoint22
1 example.com example2.com example.com example.com
2. test.com test.com test2.com test.com
3. ex.com ex.com ex1.com ex.com
4. te.com test.com te.com test.com
我已经消除了将(datapoint11,datapoint12)视为一个集合并将(datapoint21,datapoint22)视为另一集合的重复值,并为每个id将它们替换为null。 输出如下所示:
id datapoint11 datapoint12 datapoint21 datapoint22
1 example.com example2.com example.com nan
2. test.com nan test2.com test.com
3. ex.com nan ex1.com ex.com
4. te.com test.com te.com test.com
代码应在python中
这需要子集重复数据删除,而不是整个数据帧重复数据删除。
答案 0 :(得分:1)
使用:
df.where(df.apply(lambda x: ~x.duplicated(),axis=1),np.nan)
id datapoint1 datapoint2 datapoint3 datapoint4
0 1.0 example.com example2.com NaN example3.com
1 2.0 test.com NaN NaN NaN
2 3.0 ex.com NaN ex1.com NaN
3 4.0 te.com test.com NaN NaN