我有这个数据框:
power = [0,1,2,9,9,9,9,9,9,9,8,3]
df_p = pd.DataFrame(power, columns = ['power'])
power
0 0
1 1
2 2
3 9
4 9
5 9
6 9
7 9
8 9
9 9
10 8
11 3
在这里,我取了power列的值计数,然后再次对此进行了df运算,其中显示了power和相应的值计数。
vc_d = df_p.power.value_counts()
vc_d = pd.DataFrame (vc_d)
vc_d = vc_d.reset_index()
vc_d.columns =['power', 'counts']
power counts
0 9 7
1 8 1
2 3 1
3 2 1
4 1 1
5 0 1
这只是一个示例,我大约有70000个条目。我想对功率值进行迭代以检查其在DF中的出现百分比。例如:
vc_d.loc[ vc_d ['power'] > 8 , 'counts'].sum() / len(power) *100
out[] 58.333333333333336
vc_d.loc[ vc_d ['power'] > 9 , 'counts'].sum() / len(power) *100
out[] 0.0
以上可以看到,我的功效值几乎有58%大于> 8
,但是一旦我给出> 9
,它便是0.0。所需的输出将获得值“ 8”。这意味着,如果我超过8,则功率值不存在或数量更少,这将降低百分比。
任何想法该怎么做?预先感谢。
答案 0 :(得分:0)
将阈值视为0.5
,您可以使用pct_change()
查看整个系列中的百分比变化并应用您的逻辑:
df_p.power.value_counts().pct_change().fillna(0).abs().gt(.5).idxmax()
#8
位置:
df_p.power.value_counts().pct_change().fillna(0).abs()
礼物:
9 0.000000
8 0.857143
3 0.000000
2 0.000000
1 0.000000
0 0.000000