2016-07-11 1 views
1

데이터가 목록 배열 형태로되어 있습니다 ([['Manhattan', 142, 42], [...]]). 나는 복수 인덱스가있는 pd.DataFrame을 가지고 있는데 하나는 VAC이라는 컬럼을 포함하고있다.튜플이 주어지면 팬더 다중 인덱싱이 성공하고 목록은 실패합니다.

다음은 올리는 ValueError :

for vac_bbl in vac_bbls: 
    property_profiles['VAC'][vac_bbl] = None 

역 추적 :

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-98-e8edfc85d7ba> in <module>() 
     1 for vac_bbl in vac_bbls: 
----> 2  property_profiles['VAC'][vac_bbl] = None 

C:\Anaconda3\envs\test\lib\site-packages\pandas\core\series.py in __setitem__(self, key, value) 
    751   # do the setitem 
    752   cacher_needs_updating = self._check_is_chained_assignment_possible() 
--> 753   setitem(key, value) 
    754   if cacher_needs_updating: 
    755    self._maybe_update_cacher() 

C:\Anaconda3\envs\test\lib\site-packages\pandas\core\series.py in setitem(key, value) 
    747      pass 
    748 
--> 749    self._set_with(key, value) 
    750 
    751   # do the setitem 

C:\Anaconda3\envs\test\lib\site-packages\pandas\core\series.py in _set_with(self, key, value) 
    795     self._set_values(key.astype(np.bool_), value) 
    796    else: 
--> 797     self._set_labels(key, value) 
    798 
    799  def _set_labels(self, key, value): 

C:\Anaconda3\envs\test\lib\site-packages\pandas\core\series.py in _set_labels(self, key, value) 
    805   mask = indexer == -1 
    806   if mask.any(): 
--> 807    raise ValueError('%s not contained in the index' % str(key[mask])) 
    808   self._set_values(indexer, value) 
    809 

ValueError: ['Manhattan' 1750.0 53.0] not contained in the index 

그러나 다음 잘 작동 :

for vac_bbl in vac_bbls: 
    property_profiles['VAC'][tuple(vac_bbl)] = None 

는 왜입니까?

답변

3

팬더는이 컨텍스트의 목록을 사용하여 목록의 각 특정 항목으로 각 열의 색인이 생성 된 열의 데이터 프레임을 반환합니다. 튜플은 멀티 인덱스의 해당 특정 열에 대한 다중 레이어를 나타내는 데 사용됩니다. 이것은 완벽한 의미를 가지며 예상대로입니다.

각 터플에 대해 하나의 열로 데이터 프레임의 열을 반환하는 튜플 목록을 전달할 수도 있습니다.

+0

이렇게하면 다른 사람이 내 실수를 피할 수있게되기를 바랍니다. –

+0

@MaxU 감사합니다! – piRSquared

관련 문제