2016-06-26 4 views
1

어떻게하면 스프레드 시트의 값을 형식대로 얻을 수 있습니까? 통화 형식팬더는 형식이 Excel로 읽습니다.

이 예제와 함께 스프레드 시트 작업 메신저 :

ITEM NAME UNIT PRICE 
item1  USD 99 
item2  SGD 45 

하지만 조건 'USD'와 'SGD는'엑셀의 서식 기능을 사용하여 추가되었고, read_excel 기능으로 볼 수 없습니다 판다. 나는 값을 얻을 것이지만 통화 이름은 얻지 못할 것이다. 나는 그저 스프레드 시트에서만 작업 할 수 있었고 각 스프레드 시트는 6 ~ 7 장 정도의 다양한 스프레드 시트를 가지고 있었기 때문에 판다 (또는 파이썬) 수준의 솔루션을 사용하기를 원했습니다.

감사합니다.

to Daniel,이게 내가 'xlrd'엔진을 구현 한 방법입니다. 아무 것도하지 않는 것 같습니다.

excel = pd.ExcelFile('itemlist.xlsx', sheetname=None) 
master = pd.DataFrame(None) 

for sheet in excel.sheet_names: 
    df = pd.read_excel(excel,sheet,header=2, engine='xlrd') 
    master=master.append(df) 
+0

pandas는 서식 정보를 구문 분석 할 수있는 내부적으로 'xlrd'를 사용합니다. – Daniel

+0

@ 대니얼은 뭔가를 놓치고있는 것처럼 보이지만 xlrd 엔진을 구현 한 방법을 보여주기 위해 내 게시물을 편집했습니다. – carlo

답변

1

이렇게하는 데는 좋은 방법이 없습니다. pandas는 숫자 형식에 대한 지식이 없으며, xlrd가 .XLSX 파일 형식을 읽을 수있을 것 같지 않습니다 - 당신은 이러한 목표를 달성하기 위해 openpyxl를 사용할 수 here

참조, 적어도 숫자 형식에 액세스 할 수 있습니다 ,하지만 기본적으로 모든 파싱 논리를 직접 구현해야 할 것처럼 보입니다. 사람에게

In [26]: from openpyxl import load_workbook 

In [27]: wb = load_workbook('temp.xlsx') 

In [28]: ws = wb.worksheets[0] 

In [29]: ws.cell("B2") # numeric value = 4, formatted as "USD 4" 
Out[29]: <Cell Sheet1.B2> 

In [30]: ws.cell("B2").value 
Out[30]: 4 

In [31]: ws.cell("B2").number_format 
Out[31]: '"USD "#' 
0

같은 문제가, 내가 answer

그것은 스프레드 시트에 표시된 통화 세부 사항을 보존하고있는 동안 조금 성가신, 그것은 한이 사용 CSV를로 각 시트를 분리하여 그것을했다 어쨌든 직업.