文書全体の各文字の総数をカウントできます。各行の文字数カウントpyspark
結果:
[(u'A', 7), (u'C', 6), (u'T', 7), (u'G', 5)]
マイ実装
ATATCCCCGGGAT
ATCGATCGATAT
:
マイドキュメント
良い方法がありますか?
文書全体の各文字の総数をカウントできます。各行の文字数カウントpyspark
結果:
[(u'A', 7), (u'C', 6), (u'T', 7), (u'G', 5)]
マイ実装
ATATCCCCGGGAT
ATCGATCGATAT
:
マイドキュメント
良い方法がありますか?
試してみてください。
>>> counts.values().sum()
25
または
>>> sum(counts.collectAsMap().values())
25
何が欲しいのそれぞれについて、「pysparkと、各行の文字数をカウント」と各文字のない総数である場合これはトリックを行います:
data.map(lambda x:len(x)).collect()
>>> [13, 12]
yあなたがしたい場合は、
def count_occur(str):
uniq = set(str)
li = list(str)
dict = {}
for key in uniq:
dict[key] = str.count(key)
return dict
data.map(lambda x: count_occur(x)).collect()
>>> [{'C': 4, 'T': 3, 'A': 3, 'G': 3}, {'C': 2, 'T': 4, 'A': 4, 'G': 2}]
再び:、これは役立つかもしれ
data.map(lambda x:len(x)).zipWithIndex().collect()
>>> [(13, 0), (12, 1)]
今
は、各行の各文字の数をカウントする:OUは、文字の数の間で行のインデックスをしたいですラインzipWithIndex
のインデックスは、トリックを行います
data.map(lambda x: count_occur(x)).zipWithIndex().collect()
>>> [({'C': 4, 'T': 3, 'A': 3, 'G': 3}, 0), ({'C': 2, 'T': 4, 'A': 4, 'G': 2}, 1)]
はそれがお役に立てば幸いです。
一般に、より大きなジョブの場合、ByKey操作を回避または最小限に抑えようとします – grepe