달나라 노트

Python Pandas & openpyxl : cell object (cell 객체) 본문

Python/Python Pandas

Python Pandas & openpyxl : cell object (cell 객체)

CosmosProject 2024. 2. 26. 22:37
728x90
반응형

 

 

 

openpyxl의 cell 객체를 이용하면 특정 cell의 다양한 정보를 가져올 수 있습니다.

 

import pandas as pd


dict_test = {
    'col1': [1, 2, 3, 4, 5],
    'col2': ['a', 'b', 'c', 'd', 'e'],
    'col3': [1234, 0.27383720, 39372, None, 102947291.293472],
    'col4': [0.9, 0.5238, 0.13, 0.0028, 1024.29278],
}

df_test = pd.DataFrame(dict_test)

xlsx_writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')

df_test.to_excel(xlsx_writer, sheet_name='test', index=False)


worksheet = xlsx_writer.sheets['test']

tup_cells = worksheet['C:C']  # C:C 범위에 있는 Cell 참조 (단, data set이 있는 범위의 Cell만 참조)
print(tup_cells)  # 그 결과는 tuple에 Cell 객체가 담겨있는 형태

for cell in tup_cells:
    print('Cell Row =', cell.row)  # Cell의 row number
    print('Cell Column =', cell.column)  # Cell의 Column number
    print('Cell Coordinate =', cell.coordinate)  # Cell의 Coordinate
    print('Cell Value =', cell.value)  # Cell에 입력된 값
    print('Cell Style =', cell.style)  # Cell의 style
    print('')


xlsx_writer.close()



-- Result
(<Cell 'test'.C1>, <Cell 'test'.C2>, <Cell 'test'.C3>, <Cell 'test'.C4>, <Cell 'test'.C5>, <Cell 'test'.C6>)

Cell Row = 1
Cell Column = 3
Cell Coordinate = C1
Cell Value = col3
Cell Style = Normal

Cell Row = 2
Cell Column = 3
Cell Coordinate = C2
Cell Value = 1234.0
Cell Style = Normal

Cell Row = 3
Cell Column = 3
Cell Coordinate = C3
Cell Value = 0.2738372
Cell Style = Normal

Cell Row = 4
Cell Column = 3
Cell Coordinate = C4
Cell Value = 39372.0
Cell Style = Normal

Cell Row = 5
Cell Column = 3
Cell Coordinate = C5
Cell Value = 
Cell Style = Normal

Cell Row = 6
Cell Column = 3
Cell Coordinate = C6
Cell Value = 102947291.293472
Cell Style = Normal

 

결과를 보면 Column number = 3 즉, Column C에 존재하는 cell들의 객체가 얻어진 것을 볼 수 있습니다.

 

 

 

 

 

import pandas as pd


dict_test = {
    'col1': [1, 2, 3, 4, 5],
    'col2': ['a', 'b', 'c', 'd', 'e'],
    'col3': [1234, 0.27383720, 39372, None, 102947291.293472],
    'col4': [0.9, 0.5238, 0.13, 0.0028, 1024.29278],
}

df_test = pd.DataFrame(dict_test)

xlsx_writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')

df_test.to_excel(xlsx_writer, sheet_name='test', index=False)


worksheet = xlsx_writer.sheets['test']
cell = worksheet['B3']  # B3 cell의 객체를 가져옴
print('Cell Row =', cell.row)  # Cell의 row number
print('Cell Column =', cell.column)  # Cell의 Column number
print('Cell Coordinate =', cell.coordinate)  # Cell의 Coordinate
print('Cell Value =', cell.value)  # Cell에 입력된 값
print('Cell Style =', cell.style)  # Cell의 style


xlsx_writer.close()



-- Result
Cell Row = 3
Cell Column = 2
Cell Coordinate = B3
Cell Value = b
Cell Style = Normal

 

위처럼 worksheet로부터 특정 cell 하나의 객체를 바로 얻어올 수도 있습니다.

 

 

 

 

 

 

어떤 row 전체에 대한 참조를 할 수도 있습니다.

 

import pandas as pd


dict_test = {
    'col1': [1, 2, 3, 4, 5],
    'col2': ['a', 'b', 'c', 'd', 'e'],
    'col3': [1234, 0.27383720, 39372, None, 102947291.293472],
    'col4': [0.9, 0.5238, 0.13, 0.0028, 1024.29278],
}

df_test = pd.DataFrame(dict_test)

xlsx_writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')

df_test.to_excel(xlsx_writer, sheet_name='test', index=False)


worksheet = xlsx_writer.sheets['test']

tup_cells = worksheet['1:1']  # 1:1 범위에 있는 Cell 참조 (단, dataset이 있는 범위의 Cell만 참조)
print(tup_cells)  # 그 결과는 tuple에 Cell 객체가 담겨있는 형태

for cell in tup_cells:
    print('Cell Row =', cell.row)  # Cell의 row number
    print('Cell Column =', cell.column)  # Cell의 Column number
    print('Cell Coordinate =', cell.coordinate)  # Cell의 Coordinate
    print('Cell Value =', cell.value)  # Cell에 입력된 값
    print('Cell Style =', cell.style)  # Cell의 style
    print('')


xlsx_writer.close()



-- Result
(<Cell 'test'.A1>, <Cell 'test'.B1>, <Cell 'test'.C1>, <Cell 'test'.D1>)

Cell Row = 1
Cell Column = 1
Cell Coordinate = A1
Cell Value = col1
Cell Style = Normal

Cell Row = 1
Cell Column = 2
Cell Coordinate = B1
Cell Value = col2
Cell Style = Normal

Cell Row = 1
Cell Column = 3
Cell Coordinate = C1
Cell Value = col3
Cell Style = Normal

Cell Row = 1
Cell Column = 4
Cell Coordinate = D1
Cell Value = col4
Cell Style = Normal

 

보면 row number = 1인 영역 전체에 데이터가 있는 cell들이 얻어진 것을 볼 수 있습니다.

 

 

 

 

 

728x90
반응형
Comments