Pandasで、あるデータフレームで(ExcelのCountifs)をカウントし、異なる長さの別のデータフレームで新しい列としてカウントを追加する方法はありますか?

rescot

私はパンダのエクセル式を翻訳しています。2つのデータフレームdf1とがありdf2、最初の列のデータdf1フレームdf2で値をカウントし、カウントされた値がの値df1と等しいデータフレームデータを入力する必要がありますdf2新しい列をチェックしdf2て、からのカウント値を入力するにはどうすればよいdf1ですか?

df1

      id      member        seq
0   48299      Koif          1
1   48299      Iki           1
2   48299      Juju          2
3   48299      PNik          3 
4   48865      Lok           1 
5   48865      Mkoj          2
6   48865      Kino          1
7   64865      Boni          1
8   64865      Afriya        2
9   50774      Amah          2
10  23697      Pilato        1
11  23697      Clems         1

df2

   group_id      group_name    count
0   48299      e_sys          
1   50774      Y3N
2   64865      nana
3   48865      juzti

以下からのメンバーがあるかもしれませんdf1例えばClemsPilatoそのカウント、このグループがでないので必要ありませんdf2

私は問題なくカウントを行うことができます(以下のコードを参照)。私の問題は、カウントidインdf1group_idインdf2比較し、カウント値を入力することです。

カウント:

 df1.groupby('id')['id'].count()

私の現在の解決策は次のとおりです。

df2['count'] = df1[(df2['group_id'].isin(df1['id']))].count() Or

df2['count'] = df1[(df2['group_id'].isin(df1['id']))].transform('count')

どちらも望ましい結果をもたらしません。

結果df2

   group_id      group_name    count
0   48299      e_sys              4
1   50774      Y3N                1
2   64865      nana               2
3   48865      juzti              3
ジェズリール

使用mapSeries

df2['count'] = df2['group_id'].map(df1.groupby('id')['id'].count())

代替Series.value_counts

df2['count'] = df2['group_id'].map(df1['id'].value_counts())

print (df2)
   group_id group_name  count
0     48299      e_sys      4
1     50774        Y3N      1
2     64865       nana      2
3     48865      juzti      3

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ