2017-12-03 145 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