我有以下数据框,我试图实际绘制曲线,但问题是它在精度和召回方面都有多个相应的值。
precision recall
1 0.000000 0
7 0.000000 0
23 0.000000 0
28 0.000000 0
34 0.000000 0
35 0.000000 0
40 0.000000 0
50 0.000000 0
60 0.000000 0
17859 0.133333 0.009050
13159 0.066667 0.012195
9232 0.133333 0.012500
6131 0.066667 0.013333
7900 0.066667 0.014085
11671 0.066667 0.014925
20317 0.066667 0.014925
我想保留唯一的行,考虑到上面的数据集在我对unique的解释中保持唯一性:
precision recall
1 0.000000 0
17859 0.133333 0.009050
13159 0.066667 0.012195
9232 0.133333 0.012500
6131 0.066667 0.013333
7900 0.066667 0.014085
20317 0.066667 0.014925
如何转换原始数据框以获取上述唯一行?
我尝试了分组方法:
grouped = df.groupby(cols_to_consider)
index = [gp_keys[0] for gp_keys in grouped.groups.values()]
unique_df = df.reindex(index)
但没效果。
答案 0 :(得分:2)
您可以使用drop_duplicates()删除重复的行。
In [49]: df.drop_duplicates()
Out[49]:
precision recall
1 0.000000 0.000000
17859 0.133333 0.009050
13159 0.066667 0.012195
9232 0.133333 0.012500
6131 0.066667 0.013333
7900 0.066667 0.014085
11671 0.066667 0.014925
另外,你的方法应该可行,我猜柱名必须搞砸了吗?
In [57]: grouped = df.groupby(df.columns.tolist())
In [58]: index = [gp_keys[0] for gp_keys in grouped.groups.values()]
In [59]: unique_df = df.reindex(index)
In [60]: unique_df
Out[60]:
precision recall
1 0.000000 0.000000
11671 0.066667 0.014925
6131 0.066667 0.013333
7900 0.066667 0.014085
17859 0.133333 0.009050
9232 0.133333 0.012500
13159 0.066667 0.012195