我正在尝试从最大频率的列值出现次数中选择一个值。当具有相同频率的多个值恰好是最大值时存在边缘情况。
我所做的是选择该值与该值所属行的另一列值的最大总和之和。
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
答案 0 :(得分:1)
每个数据帧列实际上都是一个系列。
现在在一个系列中,如果你想知道哪个元素大多数时间都出现,那么使用.value_counts()。idxmax()
如果你想知道最高频率,请使用.value_counts()。max()