我希望这是有意义的,但是我需要得到一列的值的总和,但它需要是与groupby生成的组中的一个特定的唯一行值相关联的所有值。
这是我用来分组所有内容的代码:
df_revPAR = df.groupby('IndustrySegmentName', as_index=False)[
['BrandRevenueTY', 'BrandSupplyTY', 'BrandDemandTY',
'IndustryRevenueTY', 'IndustrySupplyTY', 'IndustryDemandTY']].sum()
这确实根据我想要的“IndustrySegmentName”对数据进行了分组,它给了我品牌数据的总和(每个酒店每天的数字)。这就是我需要的品牌数据信息。
问题来了行业数据(IndustrySupplyTY,IndustryDemandTY,IndustryRevenueTY)针对不同的酒店名称重复。整个集团的行业数据都是相同的(IndustrySegementName)。这不是像“BrandSupply”或“BrandRevenue”数据那样的单个数据。我不需要获得该组中每个不同酒店的所有行的总和。我只需要酒店的的行业数据,或者我需要将从上述代码中获得的总和除以每个IndustrySegmentName中分组的唯一酒店名称的数量。如何执行这两种操作?
例如,在高档组中,我只需要从Hotel靛蓝获取“IndustryX”数据的总和,就可以用作整个“Upscale”组的“IndustryX”数据,而不是Hotel Indigo和Plaza Hotel中所有值的总和。
或者我需要取“Upscale”组中的“IndustryX”数据的总和,然后将其除以2(该组中唯一酒店的数量),但我需要一种方法来获得此计数。
潜在的解决方案,但正在寻找更好的编码方法:
df_brandcount = df.groupby('IndustrySegmentName', as_index=False)[
['Hotel Name']].nunique()
df_revPAR['BrandCount'] = df_brandcount['Hotel Name']
1条答案
按热度按时间wh6knrhe1#
为什么不做两个分开的组呢?
因此,一个用于酒店特定数据,一个用于行业特定数据。然后,您可以合并数据。
未测试的代码,因为没有提供测试数据样本: