使用python将某个xlsx依据某列变量的不同输出不同的csv,要注意这个xlsx存在中文,不能出现导出的csv有乱码问题
时间: 2023-05-25 22:04:12 浏览: 108
python 解决cv2绘制中文乱码问题
首先,导入需要的模块:pandas、os、chardet
``` python
import pandas as pd
import os
import chardet
```
然后,读取xlsx文件,可以使用pandas的read_excel函数,注意指定中文编码格式,
``` python
df = pd.read_excel('data.xlsx', encoding='utf-8')
```
接下来,定义函数,根据某列变量名和变量值,筛选出对应的数据,并将其保存为csv文件,csv文件的名字可以根据变量值来命名。
``` python
def save_csv(df, col_name, col_value):
'''
df: DataFrame,要保存为csv的数据
col_name: str,列名
col_value: 变量值
'''
# 筛选出对应变量值的数据
sub_df = df[df[col_name] == col_value]
# 将变量值用作csv文件名,去掉空格
csv_name = str(col_value).replace(' ', '') + '.csv'
# 保存csv文件
sub_df.to_csv(csv_name, index=False, encoding='utf-8')
```
最后,使用for循环,依次对每个不同的变量值调用上面的函数。
``` python
# 获取变量名和变量值的列表
col_name = '分类'
col_values = df[col_name].unique().tolist()
# 对每个变量值,调用保存函数
for col_value in col_values:
save_csv(df, col_name, col_value)
```
完整代码如下:
``` python
import pandas as pd
import os
import chardet
# 读取excel文件
df = pd.read_excel('data.xlsx', encoding='utf-8')
# 定义函数,保存为csv文件
def save_csv(df, col_name, col_value):
'''
df: DataFrame,要保存为csv的数据
col_name: str,列名
col_value: 变量值
'''
# 筛选出对应变量值的数据
sub_df = df[df[col_name] == col_value]
# 将变量值用作csv文件名,去掉空格
csv_name = str(col_value).replace(' ', '') + '.csv'
# 保存csv文件
sub_df.to_csv(csv_name, index=False, encoding='utf-8')
# 获取变量名和变量值的列表
col_name = '分类'
col_values = df[col_name].unique().tolist()
# 对每个变量值,调用保存函数
for col_value in col_values:
save_csv(df, col_name, col_value)
```
注意事项:
1. 要指定正确的中文编码格式,避免出现乱码问题。
2. csv文件名不要出现特殊符号和空格,避免出现文件命名不规范的错误。
阅读全文