Pandas 确定按df分组的数据中的最大计数,并将其用作返回记录的标准

Pandas 确定按df分组的数据中的最大计数,并将其用作返回记录的标准,pandas,dataframe,group-by,pandas-groupby,Pandas,Dataframe,Group By,Pandas Groupby,下午好, 我有一个月的大量数据。我想: a。查找该月内交易次数最多的账簿 b。知道了这一点,就可以提供该书上当月所有交易的分组汇总,但可以在24小时内的每个小时内显示该书的月份交易 以下是一个示例数据集: df_Highest_Traded_Away_Book = [ ('trading_book', ['A', 'A','A','A','B','C','C','C']),

下午好,

我有一个月的大量数据。我想:

a。查找该月内交易次数最多的账簿

b。知道了这一点,就可以提供该书上当月所有交易的分组汇总,但可以在24小时内的每个小时内显示该书的月份交易

以下是一个示例数据集:

df_Highest_Traded_Away_Book = [                            
                                ('trading_book', ['A', 'A','A','A','B','C','C','C']),                            
                                ('rfq_create_date_time', ['2018-09-03 01:06:09', '2018-09-08 01:23:29', 
                                                          '2018-09-15 02:23:29','2018-09-20 03:23:29',
                                                          '2018-09-20 00:23:29','2018-09-25 01:23:29',
                                                          '2018-09-25 02:23:29','2018-09-30 02:23:29',])

                            ]

df_Highest_Traded_Away_Book = pd.DataFrame.from_items(df_Highest_Traded_Away_Book)
display(df_Highest_Traded_Away_Book)

    trading_book    rfq_create_date_time
0              A    2018-09-03 01:06:09
1              A    2018-09-08 01:23:29
2              A    2018-09-15 02:23:29
3              A    2018-09-20 03:23:29
4              B    2018-09-20 00:23:29
5              C    2018-09-25 01:23:29
6              C    2018-09-25 02:23:29
7              C    2018-09-30 02:23:29    

df_Highest_Traded_Away_Book['rfq_create_date_time'] = pd.to_datetime(df_Highest_Traded_Away_Book['rfq_create_date_time'])
df_Highest_Traded_Away_Book['Time_in_GMT'] =  df_Highest_Traded_Away_Book['rfq_create_date_time'].dt.hour
display(df_Highest_Traded_Away_Book)

    trading_book    rfq_create_date_time    Time_in_GMT
0              A    2018-09-03 01:06:09               1
1              A    2018-09-08 01:23:29               1
2              A    2018-09-15 02:23:29               2
3              A    2018-09-20 03:23:29               3
4              B    2018-09-20 00:23:29               0
5              C    2018-09-25 01:23:29               1
6              C    2018-09-25 02:23:29               2
7              C    2018-09-30 02:23:29               2

df_Highest_Traded_Away_Book =  df_Highest_Traded_Away_Book.groupby(['trading_book']).size().reset_index(name='Traded_Away_for_the_Hour').sort_values(['Traded_Away_for_the_Hour'], ascending=False)   
display(df_Highest_Traded_Away_Book)

  trading_book  Trades_Bucketted_into_the_Hour_They_Occured
0            A                         4
2            C                         3
1            B                         1

display(df_Highest_Traded_Away_Book['Traded_Away_for_the_Hour'].max())

4 
i、 一个月的交易量最多

现在返回一个按本书(本月)上所有交易结果分组的结果,但要显示这样的结果,即交易是按交易时间进行的

Time_in_GMT Trades_Book_A_Bucketted_into_the_Hour_They_Occured
0                     0
1                     2
2                     1
3                     1
4                     0
.                     0
.                     0
.                     0
24                    0
任何帮助都将不胜感激。我认为有某种方法可以在一行代码中返回条件

用于顶级图书:

df_Highest_Traded_Away_Book['rfq_create_date_time'] = pd.to_datetime(df_Highest_Traded_Away_Book['rfq_create_date_time'])
df_Highest_Traded_Away_Book['Time_in_GMT'] =  df_Highest_Traded_Away_Book['rfq_create_date_time'].dt.hour

然后通过
(==)
进行比较,聚合
总和
,计算
值的计数,并通过以下方式添加缺少的值:



你好,耶兹拉尔,谢谢。我希望只归还24小时内交易量最高的那本书,所以只归还A本书。您的输出正是所需的,但只希望Book返回一列,因为它在24个交易中的总交易量最高hours@PeterLucas-是的,那么如果下一个24小时是B本书的头条,会发生什么?预计产出是多少?如果B在接下来的24小时内有更多的交易,那么只有B书的专栏会被返回完美!!再次感谢:)太好了,df_最高的交易账簿['trading_Book'],价值核算()。索引[1]有效
df_Highest_Book =  df_Highest_Traded_Away_Book.groupby(['trading_book']).size().idxmax()
#alternative solution
#df_Highest_Book =  df_Highest_Traded_Away_Book['trading_book'].value_counts().idxmax()  
print(df_Highest_Book)
A
df_Highest_Traded_Away_Book = (df_Highest_Traded_Away_Book['trading_book']
                                      .eq(df_Highest_Book)
                                      .groupby(df_Highest_Traded_Away_Book['Time_in_GMT'])
                                      .sum()
                                      .astype(int)
                                      .reindex(np.arange(25), fill_value=0)
                                      .to_frame(df_Highest_Book))
print(df_Highest_Traded_Away_Book)
             A
Time_in_GMT   
0            0
1            2
2            1
3            1
4            0
5            0
6            0
7            0
8            0
9            0
10           0
11           0
12           0
13           0
14           0
15           0
16           0
17           0
18           0
19           0
20           0
21           0
22           0
23           0
24           0