pandas.cut 带有枚举 bin
pandas.cut with enumerated bins
假设我有以下数据(这是对我的实际数据的简化但准确的表示):
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 中是否有一些功能,或者我缺少一个简单的解决方法?
以下 many-to-one 映射适合您:
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
正如 EdChum 已经指出的那样,地图是前往此处的方式
continent_lookup = {1: 'Africa', 2: 'Asia', 3: 'Africa', 4: 'Asia'}
df['Continent'] = df.Country.map(continent_lookup)
假设我有以下数据(这是对我的实际数据的简化但准确的表示):
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 中是否有一些功能,或者我缺少一个简单的解决方法?
以下 many-to-one 映射适合您:
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
正如 EdChum 已经指出的那样,地图是前往此处的方式
continent_lookup = {1: 'Africa', 2: 'Asia', 3: 'Africa', 4: 'Asia'}
df['Continent'] = df.Country.map(continent_lookup)