【问题标题】:New column in Pandas dataframe based on value of variable in existing columnPandas 数据框中的新列基于现有列中的变量值
【发布时间】:2015-08-16 06:01:00
【问题描述】:

我在创建一个新列时遇到了困难,该列的值基于同一数据框中现有列的值。现有列是数字,我正在尝试根据以下内容为新列提供高、中、低的分类值:

低:

med: (max-min)/3 - (max-min)/3 *2

高:> (max-min)/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'] 是一个浮点数?

【问题讨论】:

  • 请发布原始输入数据、代码以重现您的 df 和所需的输出,谢谢

标签: python pandas


【解决方案1】:

听起来你想重新创建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

【讨论】:

  • 感谢您的回复。这似乎让我走上了正确的轨道,但我得到了一个 KeyError。我更新了我的帖子以显示我的尝试。再次感谢。
  • @user1624577,我更新了我的示例以更好地解释如何使用 cut/qcut 函数。
  • 非常感谢!我本可以在几分钟内在 SAS 中完成此操作,但我正试图脱离该平台。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-04
  • 2018-09-01
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
相关资源
最近更新 更多