私は単純な方法でスライスし、ブランクの結果データフレームに追加します。
import pandas as pd
#Create test dataframe
a = pd.DataFrame([['A', 1, 1, 'meeting'],
['B', 1, 2, 'meeting'],
['C', 1, 3, 'meeting'],
['D', 1, 4, 'meeting'],
['E', 1, 5, 'call'],
['F', 1, 6, 'call'],
['G', 1, 7, 'call'],
['H', 2, 1, 'call'],
['I', 2, 2, 'call'],
['J', 2, 3, 'meeting'],
['K', 2, 4, 'meeting'],
['L', 2, 5, 'meeting'],
['M', 2, 6, 'meeting'],
['N', 2, 7, 'meeting'],
['O', 2, 8, 'meeting'],
['P', 4, 1, 'call'],
['Q', 4, 2, 'meeting'],
['R', 4, 3, 'call'],
['S', 4, 4, 'meeting'],
['T', 4, 5, 'call'],
['U', 4, 6, 'meeting'],
['V', 4, 7, 'call']], columns=['Account', 'Region', 'Rank', 'Activity'])
#Create blank df
result = pd.DataFrame(columns=['Account', 'Region', 'Rank', 'Activity'])
temp = a[a['Region']==1] #Slice region 1
temp = temp[temp['Activity']=='meeting'].sort_values('Rank')[:3] #Slice activity meeting then sort and get first 3
result = pd.concat([result, temp]) #Add to result df
temp = a[a['Region']==1] #Slice region 1
temp = temp[temp['Activity']=='call'].sort_values('Rank')[:2] #Slice activity call then sort and get first 2
result = pd.concat([result, temp]) #Add to result df
temp = a[a['Region']==2] #Slice region 2
temp = temp[temp['Activity']=='meeting'].sort_values('Rank')[:1] #Slice activity meeting then sort and get first one
result = pd.concat([result, temp]) #Add to result df
temp = a[a['Region']==2] #Slice region 2
temp = temp[temp['Activity']=='call'].sort_values('Rank')[:1] #Slice activity call then sort and get first 1
result = pd.concat([result, temp]) #Add to result df
temp = a[a['Region']==4] #Slice region 4
temp = temp.sort_values('Rank')[:6] #Sort then get first 6
result = pd.concat([result, temp]) #Add to result df
result['Region'] = result['Region'].apply(lambda x: int(x)) #Trim result of region and rank column
result['Rank'] = result['Rank'].apply(lambda x: int(x)) #Trim result of region and rank column
結果は次のようになります。
Account Region Rank Activity
0 A 1 1 meeting
1 B 1 2 meeting
2 C 1 3 meeting
4 E 1 5 call
5 F 1 6 call
9 J 2 3 meeting
7 H 2 1 call
15 P 4 1 call
16 Q 4 2 meeting
17 R 4 3 call
18 S 4 4 meeting
19 T 4 5 call
20 U 4 6 meeting
あなたの最初の画像は、第二のと同じですが、私はあなたがそれを編集する必要があるかもしれないと思います。 –
はい!あなたは正しいです...訂正をしました – PineNuts0
あなたはそれを解決しましたか? –