2017-09-09 1 views
0

공급 업체 및 제조업체 목록이있는 데이터 집합이 있습니다. 고유 한 공급 업체 및 제조업체마다 고유 한 번호를 할당하고 싶습니다. 나는 Python을 사용하고 있으며 일부 기계 학습 예측을 수행하기 위해이 작업을 수행하고 있습니다. 이것이 내가 지금까지 가지고있는 것입니다.어떻게 파이썬 데이터 집합에 새 열을 삽입합니까

import pandas as pd 
import numpy as np 
import seaborn as sns 
import matplotlib.pyplot as plt 
%matplotlib inline 
df = pd.read_csv('MasterData030617.csv') 
X = df.dropna(axis=0) 
numbers= np.unique(X['Supplier'], return_inverse=True) 
numbers2 = np.unique(X['Logistics'], return_inverse=True) 

이제 문제가 발생합니다. 이 새로운 열을 가져 와서 원래 데이터 세트에 추가/삽입하고 싶습니다. 나는 다음과 같은 것이 올바른 방법이라고 생각했지만 오류가 발생했다 : X [ 'New Supply'] = 숫자 X [ 'New Logistics'] = numbers2 여기서 'New Supply'와 'New Logistics'는 . 나는 내가 다음과 같은 오류가 마지막 두 명령을 실행하면 원래의 데이터에 추가 할 새로운 열의 이름 : "

ValueError        Traceback (most recent call last) 
<ipython-input-18-91f4a141e070> in <module>() 
----> 1 X['New Supply'] = numbers 
     2 X['New Logistics'] = numbers2 

//anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in __setitem__(self, key, value) 
    2417   else: 
    2418    # set column 
-> 2419    self._set_item(key, value) 
    2420 
    2421  def _setitem_slice(self, key, value): 

//anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in _set_item(self, key, value) 
    2483 
    2484   self._ensure_valid_index(value) 
-> 2485   value = self._sanitize_column(key, value) 
    2486   NDFrame._set_item(self, key, value) 
    2487 

//anaconda/lib/python2.7/site-packages/pandas/core/frame.pyc in _sanitize_column(self, key, value, broadcast) 
    2654 
    2655    # turn me into an ndarray 
-> 2656    value = _sanitize_index(value, self.index, copy=False) 
    2657    if not isinstance(value, (np.ndarray, Index)): 
    2658     if isinstance(value, list) and len(value) > 0: 

//anaconda/lib/python2.7/site-packages/pandas/core/series.pyc in _sanitize_index(data, index, copy) 
    2798 
    2799  if len(data) != len(index): 
-> 2800   raise ValueError('Length of values does not match length of ' 'index') 
    2801 
    2802  if isinstance(data, PeriodIndex): 

ValueError: Length of values does not match length of index" 

사람이 내 작업을 수행하고 제거 할 수 방법에 대한 도움을 주시기 바랍니다 수 이 오류가 발생 했습니까? 당신에게 여기

답변

0

문제는 numbersnumbers2의 길이가 X dataframe의 모양과 일치하지 않는다는 것입니다 너무 감사합니다.

고유 한 각 공급 업체 및 제조업체에 고유 한 번호를 할당하려면 매핑을 만들고 을 사용하거나 sklearn의 LabelEncoder을 사용하십시오. 여기에서 기계 학습을 사용하는 것이 목표이기 때문에.

+0

안녕하세요, 일단 LabelEncoder를 사용하고 각 고유 이름에 레이블/할당 번호가 있으면 어떻게 새 열 (이 경우 2)을 원래 데이터 집합에 삽입합니까? – afzaaldeveloper1

관련 문제