我在创建一个新列时遇到困难,该列的值基于同一数据框中现有列的值。现有列是数字,我正在尝试根据以下内容为新列指定高、中、低的分类值:
低:<(最大-最小)/3
中间:(最大-最小)/3 - (最大-最小)/3 *2
高:>(最大-最小)/3 *2
仍在学习 Pandas,因此非常感谢您的帮助。谢谢!
编辑:
这是我尝试过的:
df_unit_day_hour['Level_Score'] = pd.cut(df_unit_day_hour['Level_Score'], q=3, labels=['low', 'medium', 'high'])
我认为这几乎是我所需要的,但我收到一个错误 (KeyError)。会不会是因为 df_unit_day_hour['Level_Score'] 是一个 float ?
最佳答案
听起来您想重新创建 Series.cut
功能
考虑下面这个例子:
import numpy as np
import pandas as pd
df = pd.DataFrame({'val':np.random.choice(10, 10)})
df['cat'] = pd.cut(df['val'], [-1,2,5,10], labels=['low', 'medium', 'high'])
df
val cat
0 6 high
1 2 low
2 7 high
3 7 high
4 8 high
5 8 high
6 9 high
7 6 high
8 2 low
9 0 low
关于python - Pandas 数据框中的新列基于现有列中变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30596167/