[python] 변수의 값으로 팬더 DataFrame을 생성하면 “ValueError : 모든 스칼라 값을 사용하는 경우 인덱스를 전달해야합니다”가 나타납니다.

이것은 간단한 질문 일지 모르지만 어떻게 해야하는지 알 수 없습니다. 다음과 같이 두 가지 변수가 있다고 가정 해 봅시다.

a = 2
b = 3

이로부터 DataFrame을 구성하고 싶습니다.

df2 = pd.DataFrame({'A':a,'B':b})

오류가 발생합니다.

ValueError : 모든 스칼라 값을 사용하는 경우 인덱스를 전달해야합니다

나는 이것을 시도했다 :

df2 = (pd.DataFrame({'a':a,'b':b})).reset_index()

동일한 오류 메시지가 나타납니다.



답변

스칼라 값을 전달하는 경우 인덱스를 전달해야한다는 오류 메시지가 표시됩니다. 따라서 열에 스칼라 값을 사용할 수 없습니다 (예 : 목록 사용).

>>> df = pd.DataFrame({'A': [a], 'B': [b]})
>>> df
   A  B
0  2  3

또는 스칼라 값을 사용하고 색인을 전달하십시오.

>>> df = pd.DataFrame({'A': a, 'B': b}, index=[0])
>>> df
   A  B
0  2  3


답변

pd.DataFrame.from_records사전을 이미 가지고있을 때 더 편리한 것을 사용할 수도 있습니다 .

df = pd.DataFrame.from_records([{ 'A':a,'B':b }])

원하는 경우 색인을 다음과 같이 설정할 수도 있습니다.

df = pd.DataFrame.from_records([{ 'A':a,'B':b }], index='A')


답변

먼저 팬더 시리즈를 만들어야합니다. 두 번째 단계는 팬더 시리즈를 팬더 데이터 프레임으로 변환하는 것입니다.

import pandas as pd
data = {'a': 1, 'b': 2}
pd.Series(data).to_frame()

열 이름을 제공 할 수도 있습니다.

pd.Series(data).to_frame('ColumnName')


답변

사전을 목록에 배치하려고 시도 할 수 있습니다.

my_dict = {'A':1,'B':2}

pd.DataFrame([my_dict])

   A  B
0  1  2


답변

아마도 Series는 필요한 모든 기능을 제공 할 것입니다.

pd.Series({'A':a,'B':b})

DataFrame은 Series의 모음으로 생각할 수 있습니다.

  • 여러 Series를 하나의 데이터 프레임으로 연결 ( 여기에 설명 된대로 )

  • 기존 데이터 프레임에 Series 변수 추가 ( 예 : 여기 )


답변

Pandas DataFrame 열의 값으로 이터 러블을 제공해야합니다.

df2 = pd.DataFrame({'A':[a],'B':[b]})


답변

나는 numpy 배열과 같은 문제가 있었고 해결책은 그것들을 평평하게하는 것입니다.

data = {
    'b': array1.flatten(),
    'a': array2.flatten(),
}

df = pd.DataFrame(data)