programing

사전에서 데이터 프레임 오류: "모든 스칼라 값을 사용하는 경우 인덱스를 전달해야 합니다."

powerit 2023. 6. 12. 21:57
반응형

사전에서 데이터 프레임 오류: "모든 스칼라 값을 사용하는 경우 인덱스를 전달해야 합니다."

현재 폴더에서 csv 파일을 읽기 위해 for 루프를 사용하고 있습니다.나는 csv 파일을 읽은 후 사전의 한 줄에 데이터를 저장하고 있습니다."print(list_of_dfs.dtypes)"를 사용하여 데이터 유형을 인쇄하면 다음 메시지가 표시됩니다.

dtype: object DATTIME : object VALUE : float64 ID : int64 ID Name : object.

이 사전은 이러한 각 데이터 필드에 수천 개의 값이 저장된 중첩된 사전입니다.저는 위에 나열된 구조물의 26줄을 가지고 있습니다.데이터 필드로 구성된 행이 하나만 있는 데이터 프레임에 사전 행을 추가하려고 합니다.

인덱스 DATIME VALUE ID 이름입니다.

참고: 저는 가면서 파이썬을 배우고 있습니다.배열을 사용하여 데이터를 저장한 다음 배열을 데이터 프레임으로 변환하려고 했지만 데이터 프레임의 행을 추가할 수 없었습니다.

사전 방법을 사용하여 "df = pd"를 시도했습니다.데이터 프레임(list_of_dfs)"오류가 발생합니다.

list_of_dfs = {} 

for I in range(0,len(regionLoadArray)
list_of_dfs[I] = pd.read_csv(regionLoadArray[I]) 

#regionLoadArray contains my- file names from list directory.

dataframe = pd.DataFrame(list_of_dfs)
#this method was suggested at thispoint.com for nested dictionaries.
#This is where my error occurs^

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

저는 파이썬이 처음이라 이 문제에 도움을 주셔서 감사합니다.현재 목표는 단순히 내 헤더로 데이터 프레임을 생성하여 CSV로 보낼 수 있는 것입니다.

필요에 따라 간단한 해결 방법은 다음과 같습니다.

dct = {'col1': 'abc', 'col2': 123}
dct = {k:[v] for k,v in dct.items()}  # WORKAROUND
df = pd.DataFrame(dct)

결과적으로

print(df)

  col1  col2
0  abc   123

안타깝게도 판다는 데이터 프레임을 만들 때 항상 색인이 필요합니다.직접 설정하거나 판다가 인덱스 자체를 결정할 수 있도록 다음 구조의 개체를 사용할 수 있습니다.

    data= {'a':[1],'b':[2]}

당신의 경우 자료를 편집하는 것이 쉽지 않을 것이기 때문에,

간단한 해결책은 데이터를 목록으로 묶는 것입니다.

    dataframe = pd.DataFrame([list_of_dfs])

이 오류는 판다에게 색인이 필요하기 때문에 발생합니다.처음에는 목록 인덱싱을 생각하기 때문에 다소 혼란스러워 보입니다.이것은 기본적으로 각 사전에 해당하는 열 번호를 요구합니다.다음과 같이 설정할 수 있습니다.

import pandas as pd
list = ['a', 'b', 'c', 'd']
df = pd.DataFrame(list, index = [0, 1, 2, 3])

그러면 데이터 프레임은 다음을 산출합니다.

   0  
0 'a'
1 'b'
2 'c'
3 'd'

특히, 테스트되지 않은 numpy를 사용하면 다음과 같이 보일 수 있습니다.

list_of_dfs = {} 

for I in range(0,len(regionLoadArray)):
    list_of_dfs[I] = pd.read_csv(regionLoadArray[I]) 

ind = np.arange[len(list_of_dfs)]

dataframe = pd.DataFrame(list_of_dfs, index = ind)
import pandas as pd

d = [{"a": 1, "b":2, "c": 3},
    {"a": 4, "b":5, "c": 6},
    {"a": 7, "b":8, "c": 9}
]

pd.DataFrame(d, index=list(range(len(d))))

반환:

   a    b   c
0   1   2   3
1   4   5   6
2   7   8   9

언급URL : https://stackoverflow.com/questions/57631895/dictionary-to-dataframe-error-if-using-all-scalar-values-you-must-pass-an-ind

반응형