我正试图完成一些我认为很容易完成的事情:从我的dataframe中取出三列,使用标签编码器对它们进行编码,并简单地用新值替换当前值。
我有一个像这样的数据文件:
| Order_Num | Part_Num | Site | BUILD_ID |
| MO100161015 | PPT-100K39 | BALT | A001 |
| MO100203496 | MDF-925R36 | BALT | A001 |
| MO100203498 | PPT-825R34 | BALT | A001 |
| MO100244071 | MDF-323DCN | BALT | A001 |
| MO100244071 | MDF-888888 | BALT | A005 |
实际上,我试图使用sklearn
的LabelEncoder()
将我的字符串变量转换为数字变量。目前,我有一个函数str_to_num
给它一个列,它返回一个转换后的数据的数组(列)。它工作得很好。
但是,我很难从数据中删除旧的数据,并将其添加到新的数据中。我的剧本如下:
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
import pandas as pd
import numpy as np
# Convert the passed in column
def str_to_num(arr):
le = preprocessing.LabelEncoder()
array_of_parts = []
for x in arr:
array_of_parts.append(x)
new_arr = le.fit_transform(array_of_parts)
return new_arr
# read in data from csv
data = pd.read_csv('test.csv')
print(data)
# Create the new data
converted_column = str_to_num(data['Order_Num'])
print(converted_column)
# How can I replace data['Order_Num'] with the values in converted_column?
# Drop the old data
dropped = data.drop('Order_Num', axis=1)
# Add the new_data column to the place where the old data was?
考虑到我的当前脚本,如何将“Order_Num”列中的值替换为converted_column
中的值?我尝试过[pandas.DataFrame.replace][1]
,但是这会替换特定的值,而且我不知道如何将它映射到返回的数据。
我希望我的预期数据是:
| Order_Num | Part_Num | Site | BUILD_ID |
| 0 | PPT-100K39 | BALT | A001 |
| 1 | MDF-925R36 | BALT | A001 |
| 2 | PPT-825R34 | BALT | A001 |
| 3 | MDF-323DCN | BALT | A001 |
| 3 | MDF-888888 | BALT | A005 |
我的python --version
返回
3.6.7
发布于 2019-07-24 09:21:55
https://stackoverflow.com/questions/57187905
复制