我有一个如下所示的数据框。df = pd.DataFrame({ 'Country':['A','A','A','A','A','A','B','B','B'], 'City':['C 1','C 1','C 1','B 2','B 2','B 2','C 1','C 1','C 1'], 'Date':['7/1/2020','7/2/2020','7/3/2020','7/1/2020','7/2/2020','7/3/2020','7/1/2020','7/2/2020','7/3/2020'], 'Value':[46,90,23,84,89,98,31,84,41]})我需要创建 2 个平均值首先,以Country和City为标准其次,仅对Country为了实现这一点,我们可以轻松编写以下代码df.groupby(['Country','City']).agg('mean')+---------+------+-------+| Country | City | Value |+---------+------+-------+| A | B 2 | 90.33 || +------+-------+| | C 1 | 53 |+---------+------+-------+| B | C 1 | 52 |+---------+------+-------+df.groupby(['Country']).agg('mean'). +---------+-------+ | Country | | +---------+-------+ | A | 71.67 | +---------+-------+ | B | 52 | +---------+-------+上述 2 个代码中唯一的变化是groupbycriteria City。除此之外一切都一样。所以有明显的重复/重复的代码。(特别是当涉及到复杂的场景时)。现在我的问题是,有什么方法可以让我们编写一个代码来同时合并这两种场景。DRY——不要重复自己。我的想法如下。Choice = 'City' `<<--Here I type either City or None or something based on the requirement. Eg: If None, the Below code will ignore that criteria.`df.groupby(['Country',Choice]).agg('mean')这可能吗?或者有效地编写上述代码而不重复的最佳方法是什么?
1 回答
冉冉说
TA贡献1877条经验 获得超1个赞
我不确定你想要完成什么但是..为什么不只使用 if 呢?
columns=['Country']
if Choice:
columns.append(Choice)
df.groupby(columns).agg('mean')
添加回答
举报
0/150
提交
取消