ojp*_*ojp 2 python python-3.x pandas
我有一个熊猫数据框,我想根据另一列的值在新列中创建类别。我可以通过这样做来解决我的基本问题:
range = {
range(0, 5) : 'Below 5',
range(6,10): 'between',
range(11, 1000) : 'above'
}
df['range'] = df['value'].map(range)
Run Code Online (Sandbox Code Playgroud)
在最终的字典键中,我为 range 选择了一个较大的上限值,以确保它捕获我尝试映射的所有值。然而,这似乎是一个丑陋的黑客,我想知道如何在不指定上限的情况下概括这一点。IE。如果 > 10 :“以上”。
谢谢
您可以首先将所有值设置为“above”,然后map()用于其余选项(因此您的rangedict 只有两个项目):
range = {
range(0, 5) : 'Below 5',
range(6,10): 'between',
}
df['range'] = 'above'
df['range'] = df['value'].map(range)
Run Code Online (Sandbox Code Playgroud)
假设你有一个这样的数据框:
range value
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
Run Code Online (Sandbox Code Playgroud)
然后您可以将以下函数应用于列“值”:
def get_value(range):
if range < 5:
return 'Below 5'
elif range < 10:
return 'Between 5 and 10'
else:
return 'Above 10'
df['value'] = df.apply(lambda col: get_value(col['range']), axis=1)
Run Code Online (Sandbox Code Playgroud)
得到你想要的结果。
| 归档时间: |
|
| 查看次数: |
523 次 |
| 最近记录: |