2017-12-07 4 views
0

로드 된 Excel 시트에 목록을 쓰고 그 결과를 xlsx로 저장하는 가장 좋은 방법을 찾는 데 어려움이 있습니다. 내 코드에서 내가 작성한 목록을 가져 와서로드 된 통합 문서의 특정 열에 배치해야합니다. 아마도 데이터 프레임을 사용하여이 작업을 수행하는 더 쉬운 방법이있을 것이라고 생각하지만, 어떻게해야할지 모르겠습니다. 이상 적으로는로드 된 통합 문서의 서식을 저장하고 싶습니다.목록을 새롭게 작성하는 방법 데이터 프레임이 포함 된 Excel xlsx

col_test = [1L, 2L, 3L, 4L, 5L] 

내 코드는이

import xlrt 
from xlrd import open_workbook 
rb = open_workbook("Excel FDT Master_01_update.xlsx") 
s = rb.sheet_by_name('INPUT') 
r = 5 
for test in col_test: 
    s.cell(row = r, column = 1).value = test 
    r += 1 
rb.save('didthiswork.xlsx') 

답변

0

그 오류가 파이썬이 cell의 정의에 row라는 이름의 매개 변수를 찾을 수 있음을 의미합니다. 내가 이것을 잘못하지 않았다면 이것은 xlrd 모듈입니다. 여기서 호출하려고 시도하는 Sheet.cell()에 대한 API 설명서를 살펴 보겠습니다. 주어진 행 및 열에서

cell(rowx, colx) 

세포 개체.

매개 변수 이름을 잘못 입력 한 것으로 보입니다. 다음 행을 변경하면이를 수정해야합니다.

그것은 파이썬은 사용자가 입력하는 무엇을 의미하는지에 관해서는 추측을 할 수 없습니다, 그래서 당신은 무언가가 존재하지에 대한 오류를 얻을 때마다 여기에 매개 변수 이름처럼, 그것은 않도록있을 때 할 수있는 것은 물론
s.cell(rowx = r, colx = 1).value = test 

, 확인 문서를 읽고 오타가 있는지 확인하십시오. 또한 미래에는 기능 정의 및 사용중인 모듈의 이름과 같은 관련 정보를 게시 할 수 있습니다.

0

아나콘다 위에 추가 설치가없는 버전입니다. 스타일을 유지하지는 않지만 원래 xlsx에 복사/'붙여 넣기 값'으로 수정할 수 있습니다.

대부분의 엑셀 조작자는 원본 파일을 손상시키지 않는 데 문제가 있습니다. 그 주위에는 여러 가지 방법이 있지만 방수가되기를 원한다면 기본적으로 특정 솔루션으로 끝내거나 모든 라이브러리를 코드화 할 수 있으므로 노력할 필요가 없습니다.

팬더는 기존 데이터 프레임을 확장 할 때 약간 까다로울 수 있지만 항상 여러 가지 방법으로 수행 할 수 있습니다. 여기에서는 assign을 사용 했으므로 데이터 프레임의 행 개수가 추가하고자하는만큼 길어야합니다.

import pandas as pd 

# read the excel 
df = pd.read_excel('Geen titel 1.xlsx') # there are options to choose sheet 
print('original df') 
print(df) 
# your data is not valid python syntax so let's assume it's strings 
col_test = ['1L', '2L', '3L', '4L', '5L'] 
new_idx = range(max(len(col_test), len(df.index))) 
df = df.reindex(new_idx) # now it will accommodate different lengths 
print('reindexed df') 
print(df) 
df = df.assign(new_col=col_test) # new column added at right side 
print('modified df') 
print(df) 
df.to_excel('the_new.xlsx') 

출력물 : 그 NEW_COLUMN 열을 대체하는 대신 새로 추가되고, 그것은 특정 행에 쓰기 시작할 수 있습니다 더 구체적으로, 그래서

original df 
    a b 
0 1 c 
1 2 d 
2 3 e 
reindexed df 
    a b 
0 1.0 c 
1 2.0 d 
2 3.0 e 
3 NaN NaN 
4 NaN NaN 
modified df 
    a b new_col 
0 1.0 c  1L 
1 2.0 d  2L 
2 3.0 e  3L 
3 NaN NaN  4L 
4 NaN NaN  5L 
+0

이가 변경 될 수있는 방법이 있나요 , 6 번 행이라고? – boulderj

+0

원하는 열에 할당 할 수 있으므로'df.assign (a = col_test)'가 그렇게 할 것입니다. 팬더에 대한 수많은 자습서 중 하나를 수행하는 것이 좋으며, 설명서에는 선택/색인 생성, 주피터 노트 또는 사람들이 기본을 수행하는 YouTube의 비디오에 대한 좋은 예가 나와 있습니다. 특정 행에서 수행하려는 경우 df의 일부를 미리 선택하고 해당 값을 바꿀 수 있습니다. 약간 다릅니다. df의 기존 크기/모양 내에서만 값을 바꿀 수 있기 때문에 추가하려는 항목이 확장되면 먼저 크기/모양을 늘려야합니다. – ahed87

+0

또는 시작 부분에 col_test에'None'을 추가하십시오. 행을 아래쪽으로 이동하는 것과 같을 것입니다. 덮어 쓰지 만'None' 대신 원본 df의 원래 값을 가져 와서 넣을 수 있습니다. 당신이 파이썬/팬더에 익숙하지 않은 것 같아서 아마도 당신에게 더 편할 것입니다. – ahed87

관련 문제