Pythonスクリプトの出力として次のデータフレームがあります。pmidごとのカウントを持つ別の列を追加し、他の行を保持したまま、最初の行にカウンターを追加したいと思います。
データフレームは次のようになります。
df
PMID gene_symbol gene_label gene_mentions
0 33377242 MTHFR Matched Gene 2
1 33414971 CSF3R Matched Gene 13
2 33414971 BCR Other Gene 2
3 33414971 ABL1 Matched Gene 1
4 33414971 ESR1 Matched Gene 1
5 33414971 NDUFB3 Other Gene 1
6 33414971 CSF3 Other Gene 1
7 33414971 TP53 Matched Gene 2
8 33414971 SRC Matched Gene 1
9 33414971 JAK1 Matched Gene 1
期待されるのは:
PMID gene_symbol gene_label gene_mentions count
0 33377242 MTHFR Matched Gene 2 1
1 33414971 CSF3R Matched Gene 13 9
2 33414971 BCR Other Gene 2 9
3 33414971 ABL1 Matched Gene 1 9
4 33414971 ESR1 Matched Gene 1 9
5 33414971 NDUFB3 Other Gene 1 9
6 33414971 CSF3 Other Gene 1 9
7 33414971 TP53 Matched Gene 2 9
8 33414971 SRC Matched Gene 1 9
9 33414971 JAK1 Matched Gene 1 9
10 33414972 MAK2 Matched Gene 1 1
どうすればこの出力を達成できますか?
ありがとう
次のコマンドを使用して、各行のカウントを追加できますgroupby().transform
。
df['count'] = df.groupby('PMID')['PMID'].transform('size')
出力:
PMID gene_symbol gene_label gene_mentions count
0 33377242 MTHFR Matched Gene 2 1
1 33414971 CSF3R Matched Gene 13 9
2 33414971 BCR Other Gene 2 9
3 33414971 ABL1 Matched Gene 1 9
4 33414971 ESR1 Matched Gene 1 9
5 33414971 NDUFB3 Other Gene 1 9
6 33414971 CSF3 Other Gene 1 9
7 33414971 TP53 Matched Gene 2 9
8 33414971 SRC Matched Gene 1 9
9 33414971 JAK1 Matched Gene 1 9
それぞれの最初の行だけを本当にカウントしたい場合はPMID
、次を使用できますmask
。
df['count'] = df['count'].mask(df['PMID'].duplicated())
次に、次のようになります。
PMID gene_symbol gene_label gene_mentions count
0 33377242 MTHFR Matched Gene 2 1.0
1 33414971 CSF3R Matched Gene 13 9.0
2 33414971 BCR Other Gene 2 NaN
3 33414971 ABL1 Matched Gene 1 NaN
4 33414971 ESR1 Matched Gene 1 NaN
5 33414971 NDUFB3 Other Gene 1 NaN
6 33414971 CSF3 Other Gene 1 NaN
7 33414971 TP53 Matched Gene 2 NaN
8 33414971 SRC Matched Gene 1 NaN
9 33414971 JAK1 Matched Gene 1 NaN
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加