반응형
pandas 로 간단한 데이터프레임을 만들려고 했다. 코드는 다음과 같다.
import pandas as pd
df = pd.DataFrame({"name":"강수연", "sex":"F"})
너무 간단한 코드이다. 데이터프레임 생성인자로 사전형식으로 데이터를 만들어 넘겼다. 아래와 같은 에러가 발생한다.
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
df = pd.DataFrame({"name":"강수연", "sex":"F"})
File "C:\PROGRAMS\Python3864\lib\site-packages\pandas\core\frame.py", line 614, in __init__
mgr = dict_to_mgr(data, index, columns, dtype=dtype, copy=copy, typ=manager)
File "C:\PROGRAMS\Python3864\lib\site-packages\pandas\core\internals\construction.py", line 464, in dict_to_mgr
return arrays_to_mgr(
File "C:\PROGRAMS\Python3864\lib\site-packages\pandas\core\internals\construction.py", line 119, in arrays_to_mgr
index = _extract_index(arrays)
File "C:\PROGRAMS\Python3864\lib\site-packages\pandas\core\internals\construction.py", line 625, in _extract_index
raise ValueError("If using all scalar values, you must pass an index")
ValueError: If using all scalar values, you must pass an index
DataFrame 의 생성자에는 단순한 사전을 넘기면 안 된다. 사전을 넘긴다면, 사전의 각 value 가 길이가 같은 리스트 (혹은 시리즈)여야 한다. 이렇게 바꾸어 실행한 결과는 다음과 같다.
>>> df = pd.DataFrame({"name":[ "강수연" ], "sex":[ "F" ]})
>>> df
name sex
0 강수연 F
이 방법이 아니라면, 저런 단일값의 사전의 리스트를 넘겨서 데이터프레임을 생성할 수도 있다. json 형식으로 데이터가 저장된 걸 읽어왔을 때 이런 형식일 때가 많다.
>>> df = pd.DataFrame([ {"name":"강수연", "sex": "F"}, {"name":"박중훈", "sex": "M" } ])
>>> df
name sex
0 강수연 F
1 박중훈 M
한 줄짜리 데이터프레임을 만들고 싶다면,
>>> df = pd.DataFrame([ {"name":"강수연", "sex": "F"} ])
>>> df
name sex
0 강수연 F
에러가 발생했을 때의 코드와 아래 두가지 정상적인 예를 잘 비교해서 차이를 기억하자.
--
설명이 이해가 안 된다면 댓글로 질문 달아주세요.
728x90
'프로그래밍 > Python' 카테고리의 다른 글
파이썬 베쎌함수 그래프 그리기 (0) | 2022.07.08 |
---|---|
Geopy AttributeError: 'NoneType' object has no attribute 'latitude' (0) | 2022.06.27 |
Bithumb API, status 5100, Bad Request Request Time reqTime nowTime 에러 (0) | 2022.06.07 |
Sqrt(n) 의 연분수 표현 구하기 (0) | 2022.06.03 |
tksheet 으로 csv 파일 내용을 tkinter 창에서 보여주기 (0) | 2022.04.28 |