やりたい事
下のようなカテゴリ属性をもつ、データフレームがあるとして、(例のためpandasデータフレームで作成しています)
import pandas as pd df= pd.DataFrame({ '場所':['東京','大阪','京都','神奈川','東京','東京','京都','神奈川'], '他属性1':['a','a','a','a','a','a','a','a'], '他属性2':['a','a','a','a','a','a','a','a'], })
場所 他属性1 他属性2
0 東京 a a
1 大阪 a a
2 京都 a a
3 神奈川 a a
4 東京 a a
5 東京 a a
6 京都 a a
7 神奈川 a a
これらの件数を下のデータフレームを参考に各カテゴリごとに件数調整し抽出したいです。
df = pd.DataFrame({ '場所':['東京','大阪','京都','神奈川'], '抽出件数':[2,1,1,1] })
場所 抽出件数
0 東京 2
1 大阪 1
2 京都 1
3 神奈川 1
<目標イメージ>
場所 他属性1 他属性2
0 東京 a a
1 大阪 a a
3 神奈川 a a
4 東京 a a
6 京都 a a
順番は問わず(各カテゴリごとにシャフルしたい)
課題
pysparkを使っているのですが、対象データにおけるカテゴリ数が多く、以下のような一つずつするのは避けたいです。
df_agg = df.filter(F.col('場所')=='東京') df_agg = df.filter(F.col('場所')=='大阪') df_agg = df.filter(F.col('場所')=='神奈川')
Window関数?などを使えばそのような処理ができるのでしょうか。
回答2件
あなたの回答
tips
プレビュー