让我们说我有以下数据(这是我的实际数据的简化但准确的表示):
df
Age Country
0 10 1
1 15 2
2 20 3
3 25 1
4 30 2
5 15 3
6 20 3
7 15 4
8 20 4
我想将pandas.cut用于 bin 国家1和3进入 bin1 ,将国家2和4用进 bin2 。既不能使用预设数量的分档进行分箱,也不能使用边缘进行分箱。在一些可能的世界中,这将通过以下代码实现,但不幸的是,在现实世界中,这些代码不正确:
conts = [‘Africa’, ‘Asia’]
bins = [[1,3], [2,4]]
df['Continent'] = pd.cut(df['Country'], bins, labels = conts)
pandas中是否有一些功能,或者我缺少一个简单的解决方法?
答案 0 :(得分:1)
以下多对一映射适用于您:
dc = {(1,3):'Africa', (2,4):'Asia'}
dc_={}
for keys,v in dc.items():
for k in keys:
dc_[k]=v
df['Continent'] = df['Country'].map(dc_)
df
Age Country Continent
0 10 1 Africa
1 15 2 Asia
2 20 3 Africa
3 25 1 Africa
4 30 2 Asia
5 15 3 Africa
6 20 3 Africa
7 15 4 Asia
8 20 4 Asia
答案 1 :(得分:1)
正如EdChum已经指出的那样,地图就是这里的方式
continent_lookup = {1: 'Africa', 2: 'Asia', 3: 'Africa', 4: 'Asia'}
df['Continent'] = df.Country.map(continent_lookup)