计算参数在一定范围内的次数的问题
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 函数来做到这一点,但我不完全确定您想要什么输出。要将其转换为您的代码所暗示的形式,只需要转置输出即可。
我正在尝试计算值“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 函数来做到这一点,但我不完全确定您想要什么输出。要将其转换为您的代码所暗示的形式,只需要转置输出即可。