繁体   English   中英

需要帮助使用 Loc 来分类和替换数字

[英]Need help using Loc to bin and replace numbers

我有一列带有数值。 我想确定列中的数字是高于还是低于数字 30,如果高于或低于 30,则将其替换为 1,如果低于则替换为 0。 我目前正在使用.loc,但我似乎无法弄清楚 | 注释功能

    kraken = pd.read_csv(data_path + 'ITSM_Master_2020-10-05.csv')
    kraken.loc[[kraken['Incident_Duration']<30, 'high_or_low']=0 | 
    [kraken['Incident_Duration']>=30, 'high_or_low']=1]

类似的东西? 我将数字放入称为高或低的列中 事件持续时间是一个大列,例如数字范围为 0-100

  Incident Duration = [25,26,50,52,50,100,5]

一些问题:

  1. 您在loc中的语法。 您正在传递一个列表,其中包含 dataframe 和一个字符串,我什至不确定那里发生了什么。 我将在下面展示我通常如何使用loc ,但也许你没有错我只是不确定你的问题的根源。
  2. 你不需要| 两个任务之间。
  3. 其次是 2。您应该在使用loc为其分配值之前启动列“high_or_low”。 因此,让我们使用值 0 来启动它,并将 1 放置在您的条件需要的任何位置。

解决方案:

kraken['high_or_low'] = 0
kraken.loc[kraken['Incident_Duration'] >= 30, 'high_or_low'] = 1

无需使用loc 如果你只是做kraken["Incident_Duration"] >= 30你会得到一个 boolean 系列告诉你,对于每一行,是否满足条件。 所以剩下的就是将其转换为01和 append 该系列作为数据框的一列。 您有两种选择:

  • 一种是使用 pandas 的astype()方法将系列转换为 int:
kraken["high_or_low"] = (kraken["Incident_Duration"] >= 30).astype(int)
  • 另一种选择是乘以 1,这会导致 pandas 将其转换为int
kraken["high_or_low"] = (kraken["Incident_Duration"] >= 30) * 1

暂无
暂无

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

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