pandas.DataFrame
객체에 행을 추가하는 간단한 작업은 달성하기 어려운 것 같습니다. 이와 관련하여 3 가지 스택 오버 플로우 질문이 있지만 그중 아무것도 작동하지 않습니다.
여기 내가하려는 일이 있습니다. 행과 열의 이름뿐만 아니라 모양을 이미 알고있는 DataFrame이 있습니다.
>>> df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z'])
>>> df
a b c d
x NaN NaN NaN NaN
y NaN NaN NaN NaN
z NaN NaN NaN NaN
이제 행의 값을 반복적으로 계산하는 기능이 있습니다. 사전 또는 pandas.Series
?로 행 중 하나를 채우려면 어떻게해야 합니까? 실패한 다양한 시도는 다음과 같습니다.
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df['y'] = y
AssertionError: Length of values does not match length of index
분명히 행 대신 열을 추가하려고했습니다.
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df.join(y)
AttributeError: 'builtin_function_or_method' object has no attribute 'is_unique'
매우 유익하지 않은 오류 메시지.
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df.set_value(index='y', value=y)
TypeError: set_value() takes exactly 4 arguments (3 given)
분명히 그것은 데이터 프레임에서 개별 값을 설정하기위한 것입니다.
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df.append(y)
Exception: Can only append a Series if ignore_index=True
글쎄, 나는 색인을 무시하고 싶지 않다. 그렇지 않으면 결과는 다음과 같다.
>>> df.append(y, ignore_index=True)
a b c d
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
3 1 5 2 3
열 이름을 값에 맞추었지만 행 레이블을 잃었습니다.
>>> y = {'a':1, 'b':5, 'c':2, 'd':3}
>>> df.ix['y'] = y
>>> df
a b \
x NaN NaN
y {'a': 1, 'c': 2, 'b': 5, 'd': 3} {'a': 1, 'c': 2, 'b': 5, 'd': 3}
z NaN NaN
c d
x NaN NaN
y {'a': 1, 'c': 2, 'b': 5, 'd': 3} {'a': 1, 'c': 2, 'b': 5, 'd': 3}
z NaN NaN
그것은 또한 비참하게 실패했습니다.
어떻게합니까?
loc
데이터 프레임 의 속성은__setitem__
내가 생각하는 마술을 하는 스페셜 을 정의합니다 .