当我不知道数字是什么,但它们的范围仅为0-99时,我想找出每个数字在6个数字集的列表中的每个索引位置出现的次数。
示例列表:
data = [['22', '45', '6', '72', '1', '65'], ['2', '65', '67', '23', '98', '1'], ['13', '45', '98', '4', '12', '65']]
最后,我将把结果计数放入PandasDataFrame,看起来像这样:
num numofoccurances position numoftimesinposition
01 02 04 01
01 02 05 01
02 01 00 01
04 02 03 01
06 01 02 01
12 01 04 01
13 01 00 01
and so on...
由于num每次出现在不同的索引位置时都会重复,因此结果数据会略有不同,但希望这有助于您理解我在寻找什么。
到目前为止,这是我开始做的:
data = json.load(f)
numbers = []
contains = []
'''
This section is simply taking the data from the json file and putting it all into a list of lists containing the 6 elements I need in each list
'''
for i in data['data']:
item = [i[9], i[10]]
# print(item)
item = [words for segments in item for words in segments.split()]
numbers.append(item)
'''
This is my attempt to count to number of occurrences for each number in the range then add it to a list.
'''
x = range(1,99)
for i in numbers:
if x in i and not contains:
contains.append(x)
2条答案
按热度按时间ny6fqffe1#
如果感觉上面的代码很慢,那么使用
collections
中的Counter
:brccelvz2#
这应该可以解决您的查询(应该比非常慢的groupby(您需要两个)和其他Pandas操作更快)-
结果显示-
1在您共享的样本数据中总共出现了2次,在第5和第6位各出现了1次。同样,2总共出现了1次,在第1位也是如此。