pandas DataFrame选择所有具有最大出现频率的列值

时间:2017-09-11 14:22:16

标签: python-3.x dataframe aggregate

我正在尝试从最大频率的列值出现次数中选择一个值。当具有相同频率的多个值恰好是最大值时存在边缘情况。

我所做的是选择该值与该值所属行的另一列值的最大总和之和。

max_cur_freq = df[df['currency'] != '']['currency'].mode().tolist()
biggest_amount = 0.0
biggest_amount_currency = ''
for cur in max_cur_freq:
    if df[df['currency'] == cur]['amount'].agg('sum') > biggest_amount:
       biggest_amount_currency = cur
       biggest_amount = df[df['currency'] == cur]['amount'].agg('sum')

# assigns the currency with the largest sum amount as the values for column common_currency
df['common_currency'] = biggest_amount_currency

因此,代码会选择行currency总和为amount的{​​{1}},currency中存在此DataFrame

我想知道最好的方法是什么。

PS。样本DataFrame

   currency   amount
50      CAD   410.85
51      CAD   1441.68
53      CAD   1330.33
17625   JPY   2797856.0
17663   JPY   1440.0
17664   JPY   1445.33
16734   CNY   27840.00
54546   CNY   273269.53
17654   GBP   384.0
17655   GBP   526.0
16732   CHF   474.7
16733   CHF   195173.3

1 个答案:

答案 0 :(得分:1)

每个数据帧列实际上都是一个系列。

现在在一个系列中,如果你想知道哪个元素大多数时间都出现,那么使用.value_counts()。idxmax()

如果你想知道最高频率,请使用.value_counts()。max()