将新值映射到DataFrame列

时间:2017-12-03 03:06:01

标签: python pandas dataframe

我有一个带有名为' quality'它的数值介于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({< 6:0,> 5:1})

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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)