迭代数据框中列的值计数

时间:2019-12-15 12:20:00

标签: python pandas loops

我有这个数据框:

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,则功率值不存在或数量更少,这将降低百分比。

任何想法该怎么做?预先感谢。

1 个答案:

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