Dataframe如何仅保留唯一行和绘图曲线

时间:2015-04-21 18:44:48

标签: python pandas dataframe

我有以下数据框,我试图实际绘制曲线,但问题是它在精度和召回方面都有多个相应的值。

       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)

但没效果。

1 个答案:

答案 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