2017-12-03 95 views
0

我有一个名为'quality'的数字值为1到9的pandas数据框,我想按如下方式转换这些值: 将5或更少的值转换为0,并且大于或等于6被转换为1。将新值映射到DataFrame列

这行代码的工作原理:5被映射为0,和6被映射到1。

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

但是,这行代码会引发错误。

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

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

+0

是你在找什么? – UberStuper

回答

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) 
1

我会使用NP在这种情况下。

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

'df ['q'] = df.Quality.lt(7).astype(int)':-) – Wen