私はパンダのエクセル式を翻訳しています。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
例えばClems
とPilato
そのカウント、このグループがでないので必要ありませんdf2
。
私は問題なくカウントを行うことができます(以下のコードを参照)。私の問題は、カウントid
インdf1
とgroup_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
使用map
者Series
:
df2['count'] = df2['group_id'].map(df1.groupby('id')['id'].count())
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]
コメントを追加