[英]Dataframe how to keep only unique rows and plot curve
我在下面的數據框中嘗試實際繪制曲線,但問題是在精度和查全率方面,每個值都有多個對應的值。
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
考慮到以上數據集,我想保留唯一行,在我對唯一性的解釋中,保持唯一性將是:
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)
但是沒有用。
您可以使用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
另外,您的方法應該可以工作,我想必須將column_names弄亂了嗎?
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.