Untitled
unknown
plain_text
2 years ago
2.4 kB
9
Indexable
import pandas as pd
import numpy as np
def parse_excel_cell_values(excel_path, cells_info):
"""
Parses values from specific cells in an Excel file.
Parameters:
- excel_path: Path to the Excel file.
- cells_info: A list of dictionaries, each containing 'position' (a tuple of (row, column)),
'data_type' (desired Python data type), and 'fallback_value'.
Returns:
A list of parsed values corresponding to each cell information in cells_info.
"""
# Load the Excel file into a DataFrame
df = pd.read_excel(excel_path)
# Initialize an empty list to store the parsed values
parsed_values = []
# Loop over the cells_info to process each specified cell
for cell_info in cells_info:
row, column = cell_info['position']
desired_type = cell_info['data_type']
fallback_value = cell_info['fallback_value']
# Extract the value from the specified cell
try:
value = df.iloc[row, column]
except IndexError:
# If the specified cell is out of bounds, use the fallback value
value = fallback_value
# Apply parsing and type casting with fallback
parsed_value = try_parse(value, desired_type, fallback_value)
parsed_values.append(parsed_value)
return parsed_values
def try_parse(value, data_type, fallback_value):
"""
Attempts to parse a value into the specified data type, using a fallback value if parsing fails.
Parameters:
- value: The value to parse.
- data_type: The desired Python data type.
- fallback_value: The value to use if parsing fails.
Returns:
The parsed value or the fallback value.
"""
if pd.isna(value) or value == '':
return fallback_value
try:
return data_type(value)
except (ValueError, TypeError):
return fallback_value
# Example usage
if __name__ == "__main__":
excel_path = 'path_to_your_excel_file.xlsx'
cells_info = [
{'position': (0, 0), 'data_type': str, 'fallback_value': 'default_string'},
{'position': (1, 1), 'data_type': float, 'fallback_value': 0.0},
# Add more cell specifications as needed
]
parsed_values = parse_excel_cell_values(excel_path, cells_info)
print(parsed_values)
Editor is loading...
Leave a Comment