import pandas as pd
import numpy as np
# 文件列表
#苏5-4-35H1第八段秒点数据csv苏5-4-35H1第二段秒点数据.csv苏5-4-35H1第六段秒点数据.csv苏5-4-35H1第七段秒点数据.csv苏5-4-35H1第三段秒点数据csv苏5-4-35H1第四段秒点数据.csv苏5-4-35H1第五段秒点数据csv苏5-4-35H1第一段秒点数据csv
# file_names = [
# '苏5-4-35H1第八段60分点数据.xls',
# '苏5-4-35H1第二段60分点数据.xls',
# '苏5-4-35H1第六段60分点数据.xls',
# '苏5-4-35H1第七段60分点数据.xls',
# '苏5-4-35H1第三段60秒数据.xls',
# '苏5-4-35H1第四段60分点数据.xls',
# '苏5-4-35H1第五段60分点数据.xls',
# '苏5-4-35H1第一段60分点数据.xls'
# ]
file_names = [
'苏5-4-35H1第八段秒点数据.xls',
'苏5-4-35H1第二段秒点数据.xls',
'苏5-4-35H1第六段秒点数据.xls',
'苏5-4-35H1第七段秒点数据.xls',
'苏5-4-35H1第三段秒点数据.xls',
'苏5-4-35H1第四段秒点数据.xls',
'苏5-4-35H1第五段秒点数据.xls',
'苏5-4-35H1第一段秒点数据.xls'
]
# 文件基础路径苏5-4-35H1-秒点txt版数据
# base_path = 'C:\\Users\\H.Jenkin\\Desktop\\苏5-4-35H1分点数据txt版\\'
base_path = 'C:\\Users\\H.Jenkin\\Desktop\\su5\\苏5-4-35H1-秒点txt版数据\\'
# 指定要保留的列名列表
columns_to_keep = ['时间', '砂浓度(套管)','压力(套管)', '排量(套管)' ]
# 列名映射
column_mapping = {'时间': 'Time', '压力(套管)': 'Treating Pressure', '排量(套管)': 'Slurry Rate',
'砂浓度(套管)': 'Prop Conc.'}
for file_name in file_names:
# 完整的输入文件路径
input_file_path = base_path + file_name
# 创建输出文件路径
output_file_path_excel = base_path + file_name.replace('.xls', '_filtered.xls')
output_file_path_txt = base_path + file_name.replace('.xls', '.txt')
# # 使用pandas读取Excel文件
df = pd.read_excel(input_file_path)
# 选取指定的列
filtered_df = df[columns_to_keep]
# 获取空行的索引
empty_indexes = filtered_df[filtered_df.isnull().all(axis=1)].index
# 删除空行的上一行数据
for index in empty_indexes:
if index - 1 < len(filtered_df):
filtered_df = filtered_df.drop(index - 1)
# 删除包含空值的行
filtered_df = filtered_df.dropna()
# 重命名列
filtered_df = filtered_df.rename(columns=column_mapping)
# # 重置索引并更新'Time'列
# filtered_df = filtered_df.reset_index(drop=True)
# filtered_df['Time'] = filtered_df.index - 1 # Starting from 0
# # Modify the value in the first column and third row to Min (kg/m3) (MPa) (m3/min)
# filtered_df.loc[0, 'Time'] = '(Min)'
# filtered_df.loc[0, 'Prop Conc.'] = '(kg/m3)'
# filtered_df.loc[0, 'Treating Pressure'] = '(Mpa)'
# filtered_df.loc[0, 'Slurry Rate'] = '(m3/min)'
import numpy as np
# 重置索引并更新'Time'列
filtered_df = filtered_df.reset_index(drop=True)
# 生成等差数列作为新的'Time'列,个数为DataFrame的长度,并保留小数点后三位
num_rows = len(filtered_df)
time_values = np.arange(start=-0.01666, stop=num_rows * 0.01666, step=0.01666)[:num_rows]
#保留小数点后4位
filtered_df['Time'] = np.round(time_values, 4)
# Modify the value in the first column and third row to Min (kg/m3) (MPa) (m3/min)
filtered_df.loc[0, 'Time'] = '(Min)'
filtered_df.loc[0, 'Prop Conc.'] = '(kg/m3)'
filtered_df.loc[0, 'Treating Pressure'] = '(MPa)'
filtered_df.loc[0, 'Slurry Rate'] = '(m3/min)'
# # 将筛选后的数据框保存到新的Excel文件
# filtered_df.to_excel(output_file_path_excel, index=False, engine='xlwt')
# 将筛选后的数据框保存到TXT文件
filtered_df.to_csv(output_file_path_txt, sep='\t', index=False)
print(f'Filtered Excel file for {file_name} has been saved to: {output_file_path_excel}')
print(f'Filtered TXT file for {file_name} has been saved to: {output_file_path_txt}')
excel转txt
于 2024-02-29 11:45:01 首次发布
文章描述了一个Python脚本,使用pandas和numpy库读取、处理Excel文件中的井下测井数据,包括数据筛选、删除空值、列重命名、时间列重置和格式转换,最后保存为新Excel和TXT文件。
摘要由CSDN通过智能技术生成