【问题标题】:Mapping new values to a DataFrame column将新值映射到 DataFrame 列
【发布时间】:2018-05-16 19:50:19
【问题描述】:

我有一个 pandas 数据框,其中有一列名为“质量”的列,其数值介于 1 和 9 之间,我想将这些值转换如下: 小于等于 5 转换为 0,大于等于 6 转换为 1。

这行代码有效:5 被映射到 0,6 被映射到 1。

wine['quality_target'] = wine.quality.map({5:0, 6:1})

但是,这行代码会抛出错误。

wine['quality_target'] = wine.quality.map({5:1})

如何指定map,要映射(小于6:0,大于5:1

【问题讨论】:

  • 这就是您要找的东西吗?

标签: python pandas dataframe


【解决方案1】:

我会在这种情况下使用 np.where。

import numpy as np
df['q'] = np.where(df.Quality < 7, 0, 1))

【讨论】:

  • df['q']=df.Quality.lt(7).astype(int) :-)
【解决方案2】:

将来您可能希望提供一些测试数据和您尝试过的内容。格式化代码也很好。我会试试这个:

import pandas as pd

# some fake data
data = pd.DataFrame({
'col1':[1, 1, 2, 10, 5, 3, 6, 7]
})

map_func = lambda x: 0 if x <= 5 else 1
# apply it to the dataframe
data.col1.apply(map_func)
# this is not done in place so you can create a new column
data['col1_transformed'] = data.col1.apply(map_func)

【讨论】:

    猜你喜欢
    • 2016-09-02
    • 2022-01-15
    • 1970-01-01
    • 2017-09-09
    • 2021-06-12
    • 2021-10-30
    • 2021-03-09
    • 2020-09-09
    • 2016-06-04
    相关资源
    最近更新 更多