次のデータフレームからカウントを生成するPythonスクリプトを作成しようとしています。私はExcelでcountifsを使用していましたが、 'Sample'と 'Region'に重複しているためcountifsの使用に問題があります。条件が真の場合、パンダは一意にカウントされます。
例入力DFは:
Sample Chr Start End Region Size Strand Chr2 Start2 End2 Coverage Overlap
101 chr1 198661465 198661475 NM_002838_PTPRC_intron_2_R 10 + chr1 198608563 198661471 0 6
101 chr1 198661465 198661475 NM_001267798_PTPRC_intron_2_R 10 + chr1 198608563 198661471 0 6
101 chr1 198661465 198661475 NM_080921_PTPRC_intron_2_R 10 + chr1 198608563 198661471 0 6
101 chr1 236966727 236966942 NM_000254_MTR_cds_2 215 + chr1 236966742 236966743 11 1
101 chr1 236966727 236966942 NM_001291939_MTR_cds_2 215 + chr1 236966742 236966743 11 1
101 chr1 236966742 236966942 NM_001291940_MTR_5utr_2 200 + chr1 236966742 236966743 11 1
101 chr1 236979843 236979853 NM_000254_MTR_intron_8_L 10 + chr1 236979846 236979847 9 1
101 chr1 236979843 236979853 NM_000254_MTR_intron_8_L 10 + chr1 236979847 236979848 8 1
101 chr1 236979843 236979853 NM_000254_MTR_intron_8_L 10 + chr1 236979848 236979852 7 4
101 chr1 236979843 236979853 NM_000254_MTR_intron_8_L 10 + chr1 236979852 236979854 6 1
101 chr1 236979843 236979853 NM_001291940_MTR_intron_8_L 10 + chr1 236979846 236979847 9 1
101 chr1 236979843 236979853 NM_001291940_MTR_intron_8_L 10 + chr1 236979847 236979848 8 1
101 chr1 236979843 236979853 NM_001291940_MTR_intron_8_L 10 + chr1 236979848 236979852 7 4
ので、単一のサンプルが複数回列挙された同じ「リージョン」を持つことができます(別の座標を、それはカウントのために重要ではありません)。
所望の出力1 - 'サンプル' でカウント '領域は、' "UTR" または "イントロン" または "CDS"、 'サンプル' あたりの重複 '領域' の会計処理が含まれている場合:
Sample Total Intron UTR CDS
101 68 40 13 15
102 64 38 13 13
所望の出力2 - 「サンプル」で「重複」の合計「領域は、」「UTR」または「イントロン」または「CDS」が含まれている場合:
Sample Total Intron UTR CDS
101 2838 321 1433 1084
102 2524 291 1449 784
所望の出力3 - レジオ」の一覧リージョン 『」それとサンプル数のカウントと』 nが記載されている
Region Num Samples
ENST00000390559_IGHM_cds_4 2
ENST00000390559_IGMH_cds_1 2
ENST00000390559_IGMH_cds_2 2
ENST00000390559_IGMH_cds_3 12
ENST00000390559_IGMH_intron_1_L 2
ENST00000390559_IGMH_intron_1_R 2
ENST00000390559_IGMH_intron_2_L 10
EDIT: 私は出力#3を取得する方法を考え出した:
df.groupby('Region').Sample.nunique()
を、私は、出力のための総取得することができます#1:
df.groupby('Sample').Region.nunique()
今私はちょうど「UTR/CDS /イントロン」を含む、そして濾過グループの「オーバーラップ」を合計するための私のグループをフィルタリングする方法を理解する必要があります。