繁体   English   中英

带有枚举垃圾箱的pandas.cut

[英]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来国家1和3到BIN1,和国家的2和4成BIN2。 使用预设数量的箱进行装箱或使用边缘进行箱装均无效。 在某些可能的情况下,这将通过以下代码来实现,但不幸的是,这些代码在现实世界中格式不正确:

conts = [‘Africa’, ‘Asia’]
bins = [[1,3], [2,4]]
df['Continent'] = pd.cut(df['Country'], bins, labels = conts)

熊猫中是否有某些功能,或者我缺少一个简单的解决方法?

以下多对一映射将为您工作:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM