Pandas 确定按df分组的数据中的最大计数,并将其用作返回记录的标准
下午好, 我有一个月的大量数据。我想: a。查找该月内交易次数最多的账簿 b。知道了这一点,就可以提供该书上当月所有交易的分组汇总,但可以在24小时内的每个小时内显示该书的月份交易 以下是一个示例数据集: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']),
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