def read_xlsx_file(file_path_xlsx, sheet_name_xlsx, column_name_xlsx): #使用pandas的read_excel函数读取指定的.xlsx文件,该函数可以读取Excel文件中的指定工作表,并将其转换为pandas的DataFrame对象。 df = pd.read_excel(file_path_xlsx, sheet_name=sheet_name_xlsx)#读取文件路径 #选取指定列,去重后返回该列数据。pandas的DataFrame对象可以像字典一样访问列,将列名作为键。在代码中,我们使用unique()函数去掉重复项。 selected_column_xlsx = df[column_name_xlsx].unique().tolist()# 去重 #selected_column_xlsx是指定的列名字。 return selected_column_xlsx
时间: 2024-04-27 14:25:10 浏览: 94
这段代码的作用是读取指定的.xlsx文件,并返回该文件中指定列的去重后的数据。具体来说,它实现了以下几个步骤:
1. 使用`pandas`的`read_excel`函数读取指定的`.xlsx`文件。该函数可以读取Excel文件中的指定工作表,并将其转换为`pandas`的`DataFrame`对象。
2. 选取指定列,去重后返回该列数据。`pandas`的`DataFrame`对象可以像字典一样访问列,将列名作为键。在代码中,我们使用`unique()`函数去掉重复项。
3. 将去重后的列数据转换为列表,并返回该列表。
需要注意的是,该函数需要传入三个参数,分别为`.xlsx`文件的路径、要读取的工作表名称和要读取的列名称。另外,返回的列表中的元素按照文件中出现的顺序排列。
相关问题
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)
```
通过这些优化,代码更具可读性和可维护性,并且遵循了一些最佳实践。希望这能帮到你!
def zipjie(): import os import pandas as pd # 指定要合并的文件夹路径 folder_path = r"E:\aaaa\aaaa" fields_to_write = ['aaaa', 'aaaa'] # 获取文件夹中所有的 xlsx 文件路径 xlsx_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.xlsx')] # 创建一个空的 DataFrame 用于存储合并后的数据 merged_data = pd.DataFrame() # 循环读取每个 xlsx 文件,将它们合并到 merged_data 中 for xlsx_file in xlsx_files: # 使用 pandas 读取 xlsx 文件 df = pd.read_excel(xlsx_file) # 将读取到的数据追加到 merged_data 中 merged_data = merged_data.append(df, ignore_index=True) # 在 merged_data 中添加新的一列数据 merged_data['new_column'] = 'new_value' # 将合并后的数据写入到新的 xlsx 文件中 merged_data[fields_to_write + ['new_column']].to_excel(r"E:\aaaa\aaaa\merged_file.xlsx", index=False)优化下这个代码,存在非法字符或者表情的数据,要进行过滤
好的,可以尝试如下优化:
```python
import os
import pandas as pd
import re
def zipjie():
folder_path = r"E:\aaaa\aaaa"
fields_to_write = ['aaaa', 'aaaa']
# 获取文件夹中所有的 xlsx 文件路径
xlsx_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.xlsx')]
# 创建一个空的 DataFrame 用于存储合并后的数据
merged_data = pd.DataFrame()
# 循环读取每个 xlsx 文件,将它们合并到 merged_data 中
for xlsx_file in xlsx_files:
# 使用 pandas 读取 xlsx 文件
df = pd.read_excel(xlsx_file)
# 过滤掉包含非法字符或表情的行
df = df[~df['column_name'].apply(lambda x: bool(re.findall('[^\u4e00-\u9fa5a-zA-Z0-9\s]+', str(x))))]
merged_data = merged_data.append(df, ignore_index=True)
# 在 merged_data 中添加新的一列数据
merged_data['new_column'] = 'new_value'
# 将合并后的数据写入到新的 xlsx 文件中
merged_data[fields_to_write + ['new_column']].to_excel(r"E:\aaaa\aaaa\merged_file.xlsx", index=False)
```
优化的主要思路是:在读取Excel文件时,过滤掉包含非法字符或表情的行。这里使用了正则表达式`[^\u4e00-\u9fa5a-zA-Z0-9\s]+`匹配所有非中英文数字和空白字符之外的字符,如果某行数据中包含这些字符,则认为该行数据是非法的,将其过滤掉。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)