我有一个如下所示的数据框。
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')
这可能吗?或者有效地编写上述代码而不重复的最佳方法是什么?
冉冉说
相关分类