2017-01-12 6 views
4

나는 pandas (python)를 사용하여 많은 Excel 파일을 읽고 싶습니다. 데이터를 가져올 때 모든 열을 문자열로 저장하려고합니다.Python - Pandas - Extract ENTIRE 파일을 문자열로 변환하십시오.

문제는 열의 수 또는 이름 (매번 변경됨)을 모르는 것입니다. 이 문제에 대한 쉬운 해결책이 있습니까?

converters = { i : str for i in range(0,99)} 
df = pd.read_excel('example.xlsx', converters = converters) 

을하지만 지수는 엑셀 파일이 다른 때로부터 범위를 벗어 가져옵니다 내가해야 할 노력은 무엇

.

이상적으로 내가 할 싶습니다 지금까지 비슷한 일을 나에게 도움이 될

df = pd.read_excel('example.xlsx', converters = ALL) 

그럼에도 불구하고, 내가 발견하지 않은 뭔가를 ...

당신의 도움에 감사드립니다.

+1

df = pd.read_excel ('example.xlsx'). asytpe (str)'? – MaxU

+0

MaxU, DataFrame 객체에 asytpe 속성이 있다고 생각하지 않습니다. – Jeremie

+0

'변환기 = {i : str for i in range (0,99)}'에서 – piRSquared

답변

4

UPDATE : 내가 우리가 파일 xlrd 모듈 (팬더 용) 표준을 사용하고 엑셀에서 데이터를 읽기 위해 다시 사용할 수 있다고 생각

xl = pd.ExcelFile(fn) 
ncols = xl.book.sheet_by_index(0).ncols 
df = xl.parse(0, converters={i : str for i in range(ncols)}) 

OLD 답 :

난 당신을 생각 먼저 열 수를 가져야합니다.

from openpyxl import load_workbook 

workbook = load_workbook(filename, use_iterators=True) 
col_num = workbook.worksheets[0].max_column 

converters = { i : str for i in range(col_num)} 
... 
+1

다시 upvote하려고 할 때 ... 그냥 방법이 필요합니다. 그건 내가 원하는 것이 아니야. 어떻게 두번 upvote합니까? 이것은 나의 다음 메타 질문이다. – piRSquared

+1

감사합니다 MaxU : 대부분의 경우 작동하지만 때로는 내가 추출한 테이블의 일부가 아닌 여분의 열이 파일 끝에 있습니다 (나는 피할 수 있도록 그들을 사용했습니다). 그래서 당신의 코드'col_num'은 너무 높을 것이고 인덱스는 범위를 벗어날 것입니다. 내가 찾은 해결책은'read_excel'을 두 번 사용하는 것입니다 :'df.columns.max'를 처음으로 얻는 것 (필자는 필요없는 행을 건너 뛴 다음)'converters = {i : 범위에있는 str (df.columns.max)}'. 그럼에도 불구하고 나는 두 번 엑셀 파일을 읽는 것을 피하고 싶습니다 .... – Jeremie

+0

@ user7410504 여러 번 읽지 않으려면 더 나은 형식이어야합니다. 이것이 우리가 포맷을 사용하는 이유이기 때문에 비효율적 인 일을 피할 수 있습니다. – piRSquared