pandas遍历文件夹提取单个文件中的部分列集合

import pandas as pd
import numpy as np
import os

InputDir = r'D:\workfile\juanworkfile\R\P'

rootdir = InputDir

sududfInitialWithHeight=pd.read_csv(r'D:\workfile\juanworkfile\R\P\Z_RADA_I_57793_20130628000000_P_WPRD_LC_ROBS.TXT',skiprows=3,header=None,nrows=99,sep=' ').iloc[:,0]
for parent,dirnames,filenames in os.walk(rootdir):

     for filename in filenames:

        df=pd.read_csv(os.path.join(parent,
import os from docx import Document import pandas as pd def extract_table_texts(docx_path, max_rows=30): """提取单个docx文件所有表格的前max_rows行文本""" doc = Document(docx_path) file_texts = [] # 存储当前文件所有表格的前30行文本 for table in doc.tables: table_texts = [] # 遍历表格的每一行,最多取max_rows行 for row_idx, row in enumerate(table.rows): if row_idx >= max_rows: break # 超过30行时停止 row_text = [] for cell in row.cells: text = cell.text.strip() if text: row_text.append(text) # 合并当前行的单元格文本(用逗号分隔) table_texts.append(", ".join(row_text)) # 合并当前表格的文本(用分号分隔不同行) file_texts.append("; ".join(table_texts)) # 合并所有表格的文本(用换行符分隔不同表格) return "\n".join(file_texts) def process_folder(folder_path, output_file="output.xlsx"): """处理文件夹中所有docx文件,每个文件占Excel一行""" data = [] # 遍历文件夹 for filename in os.listdir(folder_path): if filename.lower().endswith(".docx"): file_path = os.path.join(folder_path, filename) try: # 提取文本并添加到数据表 combined_text = extract_table_texts(file_path) data.append({"文件名": filename, "表格内容(前30行)": combined_text}) except Exception as e: print(f"处理文件 {filename} 时出错: {str(e)}") # 创建DataFrame df = pd.DataFrame(data) # 保存结果(无需去重) df.to_excel(output_file, index=False) return df # 使用示例 if __name__ == "__main__": input_folder = "/path/to/your/documents" # 替换为实际路径 output_file = "extracted_texts.xlsx" result_df = process_folder(input_folder, output_file) print(f"完成!共处理 {len(result_df)} 个文件,已保存至 {output_file}")请改进代码,仅提取docx表格前42行,并且在xlsx中将基数行作一,偶数行作一
03-14
从excel表CNI_Hexacorallia中LOCUS_1的第一行开始,以它其中的数据为文件名,在files_with_segment34_content这个文件夹中查找出相对应的st文件,读取这个st文件,统计文件中包含segment字符的行数记为n1,在表格LOCUS_1后生成头Segment Count并将n1填入该中,再从这个被找到的st文件的第二行开始遍历(记为遍历1),(第一种情况)如果遍历到包含字符H的行,则在Segment Count后生成头Segmentn2、头bp值n2、头segmentn2_1_range、头segmentn2_1_序头Hn3_range、头Hn3_序头segmentn2_2_range、头segmentn2_2_序头segmentn2(bp)、头segmentn2+loop(bp),(将新生成的这些依次记为a1,a2....至a10)其中n2等于读取的所在行中字符segment的数字部分,例如读取到的行包含字符segment13,则n2=13;其中n3等于读取的所在行中字符H的数字部分,例如读取到的行包含字符H13,则n3=13;同时再将这一行中包含字符bp的数字部分记为b1(例如这一行中包含字符5bp,则b1=5),将这一行第8的字符串记为b2,将这一行第9的字符串记为b3,将这一行第2的字符串记为b4,将这一行第3的字符串记为b5,将这一行第10的字符串记为b6,将这一行第11的字符串记为b7,将这一行第8的第一个数和最后一个数分别记为c1、c2以及第10的第一个数和最后一个数分别记为c3、c4,则b8=(c2-c1+1)+(c4-c3+1),b9=c4-c1+1;再将(n2以及b1至b9)依次填入刚才生成的a1至a10中。(第二种情况)如果遍历到未包含字符H的行,则在segmentn2+loop(bp)后生成7个新头,它们的名依次为Segmentn4、bp值n4、segmentn4_1_range、segmentn4_1_序、segmentn4_2_range、segmentn4_2_序、segmentn4(bp),其中n4等于读取的所在行中字符segment的数字部分,例如读取到的行包含字符segment13,则n4=13;同时再将这一行中包含字符bp的数字部分记为d1(例如这一行中包含字符5bp,则d1=5),将这一行第3的字符串记为d2,将这一行第4的字符串记为d3,将这一行第5的字符串记为d4,将这一行第6的字符串记为d5,将这一行第3的第一个数和最后一个数分别记为c1、c2以及第5的第一个数和最后一个数分别记为c3、c4,则d6=(c2-c1+1)+(c4-c3+1),最后将n4以及d1至d6依次填入刚才新生成的7中。直至遍历1遍历到这个st文件的最后一行,再从表中LOCUS_1的第二行开始直至最后一行,最后整合成一个新的表输出,请给出可执行的python代码。
最新发布
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值