Python 将新值映射到DataFrame列

Python 将新值映射到DataFrame列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个名为“quality”的列,该列的数值介于1和9之间,我想按如下方式转换这些值: 5或更少转换为0,6或更多转换为1 这行代码起作用:5映射到0,6映射到1 葡萄酒['quality_target']=wine.quality.map{5:0,6:1} 但是,这行代码会抛出一个错误 葡萄酒['quality_target']=wine.quality.map{5:1} 如何指定映射,映射小于6:0,大于5:1,将来您可能需要提供一些测试数据和您尝试过的内容。另外,格式化代码也很好。我想试

我有一个名为“quality”的列,该列的数值介于1和9之间,我想按如下方式转换这些值: 5或更少转换为0,6或更多转换为1

这行代码起作用:5映射到0,6映射到1

葡萄酒['quality_target']=wine.quality.map{5:0,6:1}

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

葡萄酒['quality_target']=wine.quality.map{5:1}


如何指定映射,映射小于6:0,大于5:1,将来您可能需要提供一些测试数据和您尝试过的内容。另外,格式化代码也很好。我想试试这个:

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)

在这个场景中,我将使用np.where

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

这就是您要找的吗?df['q']=df.Quality.lt7.astypeint:-