3
私がDFを持っている:は、最高のパフォーマンスで列の異なるメンバー間の比率をゲット
ClientHostID LoginDaysSum
0 70 4
1 70 2
2 71 11
3 71 2
4 79 37
5 79 1
6 79 1
7 80 18
8 80 6
9 87 29
10 87 1
11 88 88
12 88 2
13 88 1
14 88 1
15 88 1
16 88 1
ソートされている:すべてのClientHostIDはとの比率を取得するために私が欲しいもの
local_input_list.sort_values(['ClientHostID', 'LoginDaysSum'], ascending=[True, False], inplace=True)
があります彼の最大の二LoginDaysSumに彼の最大のLoginDaysSum(結果は次のようになります):
ClientHostID ratio
0 70 2
1 71 5.5
2 79 37
3 80 3
4 87 29
5 88 22
私はそれを得るために管理します。
df = df.groupby(['ClientHostID'], sort=False)['LoginDaysSum'].apply(lambda x: x.iloc[0]/x.iloc[1]).reset_index(name='ratio')
しかし、漁獲量が適用されます使用している...パフォーマンスに
重すぎる私のような何かを考えた:私はこれをしようとすると、私はすべてのように上のエラーを取得
largest = df.groupby(['ClientHostID']).first()
drop_largest = df.drop(largest)
second_largest = drop_largest.groupby(['ClientHostID']).first()
df['ratio'] = largest['LoginDaysSum']/second_largest['LoginDaysSum']
これは私が達成しようとしていることの一般的な雰囲気を得るために完全に擬似です。
私は、 ありがとう、任意の入力をお願い申し上げます
を。エドの答えは正しい比率を示しています。 –