【发布时间】:2018-08-30 22:05:48
【问题描述】:
我在 Python 中有一个 panda 数据框,我在其中应用了 groupby。然后我想在之前的结果上应用一个新的 groupby + sum 。更具体地说,首先我在做:
check_df = data_df.groupby(['hotel_code', 'dp_id', 'market', 'number_of_rooms'])
[['market', 'number_of_rooms']]
然后我想做:
check_df = check_df.groupby(['market'])['number_of_rooms'].sum()
所以,我收到以下错误:
AttributeError: Cannot access callable attribute 'groupby' of 'DataFrameGroupBy'
objects, try using the 'apply' method
我的初始数据是这样的:
hotel_code | market | number_of_rooms | ....
---------------------------------------------
001 | a | 200 | ...
001 | a | 200 |
002 | a | 300 | ...
请注意,我可能有像 (a - 200) 这样的对的重复项,这就是为什么我需要第一个 groupby。 我最终想要的是这样的:
Market | Rooms
--------------
a | 3000
b | 250
我只是想把下面的 sql 查询翻译成 python:
select a.market, sum(a.number_of_rooms)
from (
select market, number_of_rooms
from opinmind_dev..cg_mm_booking_dataset_full
group by hotel_code, market, number_of_rooms
) as a
group by market ;
有什么办法可以解决这个问题吗?如果您需要更多信息,请告诉我。
ps。我是 Python 和数据科学的新手
【问题讨论】:
-
你能发布几行你的输入数据和你想要的输出吗?
-
@Abhi 我刚刚做了。谢谢
-
嗯...我想知道,
'hotel_code', 'dp_id', 'number_of_rooms'上的 groupby 是否必要?在我看来,data_df.groupby('market').number_of_rooms.sum()应该会给你你想要的输出,因为在你的输出中你只提到了市场和房间。 -
@Will 我认为第二个答案在这里没有帮助。您是否误读了
number_of_rooms的行数? -
@tobsecret 对不起,你是对的。
标签: python sql pandas dataframe