私のデータは次のようになります:
1 1.45
1 1.153
2 2.179
2 2.206
2 2.59
2 2.111
3 3.201
3 3.175
4 4.228
4 4.161
4 4.213
私が欲しい出力は:
1 2 (1 occurs 2 times)
2 4
3 2
4 3
このために、次のコードを実行します。
SubPatent2count = {}
for line in data.split('\n'):
for num in line.split('\t'):
Mapper_data = ["%s\t%d" % (num[0], 1) ]
for line in Mapper_data:
Sub_Patent,count = line.strip().split('\t',1)
try:
count = int(count)
except ValueError:
continue
try:
SubPatent2count[Sub_Patent] = SubPatent2count[Sub_Patent]+count
except:
SubPatent2count[Sub_Patent] = count
for Sub_Patent in SubPatent2count.keys():
print ('%s\t%s'% ( Sub_Patent, SubPatent2count[Sub_Patent] ))
最後に私はこのエラーを受け取ります:
3 for num in line.split('\t'):
4 #print(num[0])
----> 5 Mapper_data = ["%s\t%d" % (num[0], 1) ]
6 #print(Mapper_data)
7 for line in Mapper_data:
IndexError: string index out of range
このエラーに対処する方法について何かアイデアがあれば、助けてください。ありがとうございました!
ただ、別のアプローチを示唆:あなたはリスト内包+で試してみましたgroupyからitertools
?
from itertools import groupby
print([(key, len(list(group))) for key, group in groupby([x.split(' ')[0] for x in data.split('\n')])])
# where [x.split(' ')[0] for x in data.split('\n')] generates a list of all starting number
# and groupy counts them
または、その正確な出力が必要な場合:
from itertools import groupby
mylist = [(key, len(list(group))) for key, group in groupby([x.split(' ')[0] for x in data.split('\n')])]
for key, repetition in mylist:
print(key, repetition)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加