import pandas as pd data = pd.read_excel('D:/workspace/python/5test.xlsx', sheet_name='Sheet1') rows = data.shape[0] #merged_row = ''.join(rows) value = data.iloc[rows - 1, 0] value1 = data.iloc[rows - 1, 1] value2 = value + value1 优化这段代码
时间: 2024-04-10 12:34:22 浏览: 180
你可以优化这段代码,将行数的计算和数据的提取合并在一起,并且不需要使用`.iloc[]`方法来提取单个单元格的值。以下是优化后的代码:
```python
import pandas as pd
data = pd.read_excel('D:/workspace/python/5test.xlsx', sheet_name='Sheet1')
value = data.iloc[-1, 0]
value1 = data.iloc[-1, 1]
value2 = value + value1
```
在这里,我使用了负索引`-1`来表示最后一行,这样就不需要使用`.shape[0]`来计算行数了。然后直接通过`data.iloc[-1, 0]`来提取最后一行第一列的值,通过`data.iloc[-1, 1]`来提取最后一行第二列的值。最后将这两个值相加赋给`value2`变量。
这样的代码更简洁和高效,避免了额外的计算和函数调用。
相关问题
import pandas as pd from openpyxl import load_workbook # 读取Excel文件 file_path = 'D:/workspace/python/7test.xlsx' output_file_path = 'D:/workspace/python/6test.xlsx' sheet_name = '客户信息系统交易接口交易总览' # 读取指定sheet页数据 data = pd.read_excel(file_path, sheet_name=sheet_name) # 合并第一列和第二列的数据,并放在第三列 data['交易场景'] = data['交易码'].astype(str) + data['交易名称'].astype(str) # 保存修改后的数据到新的Excel文件 data.to_excel(output_file_path, sheet_name=sheet_name, index=False) # 打印行数 print("行数:", len(data)) # 打印结果 print(data['交易场景'][0]) data_list = data['交易场景'].tolist # 获取所有sheet页名称 excel_file = pd.ExcelFile(file_path) sheet_names = data['交易码'].values.tolist() print(type(excel_file.sheet_names)) print(type(data['交易场景'])) print(type(sheet_names)) # 打开 Excel 文件 workbook = load_workbook(file_path) # 查找匹配的 sheet 页 matched_sheets = [] for sheet_name in sheet_names: for sheet in excel_file.sheet_names: if sheet_name in sheet: matched_sheets.append(sheet) # 打印匹配的 sheet 页 for sheet in matched_sheets: print(sheet) 优化这段代码
这段代码可以进行一些优化,以下是一些改进的建议:
1. 使用上下文管理器来打开 Excel 文件,可以确保文件在使用完后被正确关闭,这可以通过 `with` 语句来实现。
2. 将文件路径和输出文件路径作为参数传递给函数,而不是直接在代码中硬编码。这样可以增加代码的可复用性。
3. 使用列表推导式来替代循环创建匹配的 sheet 页列表。
4. 将打印结果的部分放在一个函数中,以便在需要时调用。
下面是优化后的代码示例:
```python
import pandas as pd
from openpyxl import load_workbook
def process_excel(file_path, output_file_path, sheet_name):
# 读取Excel文件
with pd.ExcelFile(file_path) as excel_file:
# 读取指定sheet页数据
data = pd.read_excel(excel_file, sheet_name=sheet_name)
# 合并第一列和第二列的数据,并放在第三列
data['交易场景'] = data['交易码'].astype(str) + data['交易名称'].astype(str)
# 保存修改后的数据到新的Excel文件
data.to_excel(output_file_path, sheet_name=sheet_name, index=False)
# 返回行数
return len(data)
def print_results(data):
# 打印行数
print("行数:", len(data))
# 打印结果
print(data['交易场景'][0])
# 获取所有sheet页名称
sheet_names = data['交易码'].values.tolist()
# 打印匹配的 sheet 页
matched_sheets = [sheet for sheet in excel_file.sheet_names if any(sheet_name in sheet for sheet_name in sheet_names)]
for sheet in matched_sheets:
print(sheet)
# 文件路径和输出文件路径
file_path = 'D:/workspace/python/7test.xlsx'
output_file_path = 'D:/workspace/python/6test.xlsx'
sheet_name = '客户信息系统交易接口交易总览'
# 处理 Excel 文件
data = process_excel(file_path, output_file_path, sheet_name)
# 打印结果
print_results(data)
```
通过这些优化,代码更具可读性和可维护性,并且遵循了一些最佳实践。希望这能帮到你!
import pandas as pd f = 'D:/workspace/python/5test.xlsx' # 读取Excel文件 data = pd.read_excel(f, sheet_name='Sheet1') # 合并第一列和第二列的数据,并放在第三列 data['交易场景'] = data['交易码'].astype(str) + data['交易名称'].astype(str) # 保存修改后的数据到新的Excel文件 data.to_excel('D:/workspace/python/6test.xlsx', sheet_name='Sheet1') # 打印行数 print("行数:", len(data)) # 打印结果 print(data['第三列'][0]) sheet_names = data['第三列'] excel_file = pd.ExcelFile(f) # 遍历每个sheet页 for sheet_name in sheet_names: # 读取当前sheet页数据 data1 = excel_file.parse(sheet_name) # 打印sheet页名称和数据 print(f"Sheet页名称: {sheet_name}") print(data1) print("-------------------------------------") 优化这段代码
以下是优化后的代码,它通过循环遍历每个sheet页,合并第一列和第二列的数据,并将结果放在第三列,然后打印行数和每个sheet页的数据:
```python
import pandas as pd
# 读取Excel文件
file_path = 'D:/workspace/python/5test.xlsx'
output_file_path = 'D:/workspace/python/6test.xlsx'
sheet_name = 'Sheet1'
# 读取指定sheet页数据
data = pd.read_excel(file_path, sheet_name=sheet_name)
# 合并第一列和第二列的数据,并放在第三列
data['交易场景'] = data['交易码'].astype(str) + data['交易名称'].astype(str)
# 保存修改后的数据到新的Excel文件
data.to_excel(output_file_path, sheet_name=sheet_name, index=False)
# 打印行数
print("行数:", len(data))
# 打印结果
print(data['交易场景'][0])
# 获取所有sheet页名称
excel_file = pd.ExcelFile(file_path)
sheet_names = excel_file.sheet_names
# 遍历每个sheet页
for sheet_name in sheet_names:
# 读取当前sheet页数据
data = excel_file.parse(sheet_name)
# 打印sheet页名称和数据
print(f"Sheet页名称: {sheet_name}")
print(data)
print("-------------------------------------")
```
这段代码在原有代码的基础上进行了如下优化:
1. 将文件路径和sheet名称作为变量,方便修改和复用。
2. 添加了注释,提高代码的可读性。
3. 在保存修改后的数据时,通过`index=False`参数去除默认的行索引。
4. 将第三列的名称由`第三列`改为`交易场景`,与代码逻辑保持一致。
请将代码中的文件路径和文件名根据你的实际情况进行修改,并运行优化后的代码。
阅读全文