计算参数在一定范围内的次数的问题

Problem with counting times a parameter is in a certain range

我正在尝试计算值“i”在 i<0.5 范围内的次数。我从一个 csv 文件中计算。明确地说,我只想将次数附加到字典中。我将 post 我的代码和我得到的结果。 我想要的结果是这样的:(86是一个占位符,不是真正的实际数字) {'0.0-0.5':[86].......

输入:

\import pandas as pd

df = pd.read_csv("gen_pop.csv", index_col=0)
new_d = {'0.0-0.5':[],'0.5-1':[],'1-10':[],'10-100':[],'100-450':[]}
for i in df.values:
    count=0
    for col in df:
        if str(i) == "nan":
            continue
        if (i<0.5).any():
            count+=1
    new_d['0.0-0.5'].append(count)
print (new_d)

输出: {'0.0-0.5': [0, 32, 0, 0, 32, 0, 0, 32,(...等等一千次)], '0.5-1': [], '1-10 ':[],'10-100':[],'100-450':[]}

提前致谢!

所以我尝试计算 i<0.5 为真的次数,但它不起作用。 需要明确的是,csv 文件包含 table 形式的数据,其中包含 12,000 个名称和 32 个组织,其中包含这些名称。数据示例: my data

好吧,假设你有一个玩具数据框。

>>> pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

   A  B
0  1  4
1  2  5
2  3  6

您的评论似乎暗示了类似这样的内容,您可以在其中将数据分成多个箱子并进行计数。

>>> pd.cut(df.values.flatten(), bins=[0, 1, 4, 6]).value_counts()
>>> # specific bins are arbitrary etc

(0, 1]    1
(1, 4]    3
(4, 6]    2
dtype: int64

但是你的代码似乎暗示你想对每一行分别执行一个剪切动作。您可以通过应用带有适当参数 df.apply(lambda r: pd.cut(r, bins=[ arbitrary... bins... here... ]).value_counts() 的 cut 函数来做到这一点,但我不完全确定您想要什么输出。要将其转换为您的代码所暗示的形式,只需要转置输出即可。