python用pandas处理excel提取关键字

import pandas as pd
import numpy as np
import os

# 定义目标文件夹路径
folder_path = r'C:\Users\win10\Desktop\新建文件夹'
# 遍历目标文件夹下的所有CSV文件
keywords_list = ['china', 'investment', 'trade', 'infrastructure', 'finance', 'debt', 'rule', 'sanction', 'International politics', 'military affairs', 'technology']

for root, dirs, files in os.walk(folder_path):
    for file in files:
        # 判断是否为CSV文件
        if file.endswith('.csv'):
            # 读取CSV文件
            file_path = os.path.join(root, file)
            # 读取CSV文件
            df = pd.read_csv(file_path)
            # 定义关键字列表
            
            # 将文章内容和标题转换为小写
            df['art_content'] = df['art_content'].str.lower()
            df['art_title'] = df['art_title'].str.lower()
            # 新增type列
            df['type'] = ''
            # 遍历每个关键字
            for keyword in keywords_list:
                # 根据关键字筛选出包含该关键字的行
                mask = df['art_content'].str.contains(keyword) | df['art_title'].str.contains(keyword)
                # 如果存在该关键字,则复制该行,并将关键字添加到type列
                if mask.any():
                    df.loc[mask, 'type'] = keyword

            # 删除type列为空的行
            df.dropna(subset=['type'], inplace=True)
            # 将type列中的关键字展开,每个关键字对应一行数据 
            df = df.explode('type') 
            # 重置索引 
            df.reset_index(drop=True, inplace=True)
            # 保存到CSV文件

            df.to_csv(file_path, encoding='utf-8', index=False)

for root, dirs, files in os.walk(folder_path):

os.walk是Python中用于遍历文件夹的函数,它返回一个三元组,分别是当前遍历到的文件夹路径、该文件夹下的子文件夹列表和该文件夹下的文件列表。for循环可以遍历这个三元组,依次处理每个文件夹和文件。

这是Python中os模块提供的walk函数,用于遍历指定目录及其子目录中的所有文件和目录。

该函数会依次遍历指定目录下的每个文件和子目录,并返回三个值(root,dirs,files)。其中:

  • root:代表当前正在遍历的目录的路径(包括该目录本身)。
  • dirs:代表root目录下的所有子目录名字(不包含子目录下的目录名字)。
  • files:代表root目录下的所有文件名字(不包含子目录下的文件名字)。

通过for循环遍历这三个返回值,可以实现遍历指定目录的所有文件和子目录的功能。在每次循环中,可以使用os.path.join(root,file)函数来得到每个文件的完整路径,进而实现对每个文件的操作。

注意 ,存的时候一定要存为uft-8格式。

检查excel属于什么格式

import chardet
#打开其中一个csv文件,查看其编码格式
f = open('\\Users\\a\\Desktop\\428.csv','rb')data = f.read()print(chardet.detect(data))

改变编码格式

import csv
import codecs
# 打开原始 CSV 文件
with open(r'D:\bruegel_art_info.csv', 'r',encoding='GB2312') as f:
    reader = csv.reader(f)
    data = [row for row in reader]
# 将数据写入新的 UTF-8 格式 CSV 文件中
with codecs.open(r'D:\bruegel_art_info.csv', 'w', encoding='utf_8') as f:
    writer = csv.writer(f)
    writer.writerows(data)

细节:

只看后缀名,不要看系统电脑显示的类型。例如,后缀是.csv,显示是xls,但要用pd.read_csv

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python读取txt文件并提取表中关键字所在行保存为Excel的方法如下: 首先,我们需要安装openpyxl库来操作Excel文件,可以使用以下命令在Python环境中安装openpyxl库: ```python pip install openpyxl ``` 接下来,我们可以使用以下代码来读取txt文件并提取表中包含关键字的行保存为Excel: ```python import openpyxl # 打开txt文件 with open('file.txt', 'r', encoding='utf-8') as file: # 读取txt文件的所有行 lines = file.readlines() # 创建一个新的Excel工作簿 workbook = openpyxl.Workbook() # 选择第一个工作表 worksheet = workbook.active # 遍历每一行 for line_index, line in enumerate(lines): # 判断关键字是否在该行中 if '关键字' in line: # 提取包含关键字的行并保存到Excel中 worksheet.append(line.split('\t')) # 如果行中的数据是通过制表符进行分隔的,可以使用split('\t')进行分割,如数据是通过其他方式分隔的,请替换分隔符 # 保存Excel文件 workbook.save('output.xlsx') ``` 在上述代码中,我们通过`open()`函数打开txt文件并使用`readlines()`方法读取所有行。然后,我们使用openpyxl库创建一个新的Excel工作簿和工作表。接下来,我们遍历每一行并判断关键字是否在该行中。如果关键字存在于该行中,我们将使用`append()`方法将该行数据添加到Excel工作表中。最后,我们使用`save()`方法保存Excel文件。 请将代码中的`file.txt`替换为你要读取的txt文件的路径,将`关键字`替换为你要提取关键字,将`output.xlsx`替换为保存的Excel文件名。 ### 回答2: 我们可以使用Pythonpandas库来实现这个功能。首先,我们需要读取txt文件并将其存储为dataframe对象。接下来,我们可以使用pandas的过滤功能来提取包含关键字的行。最后,我们可以将结果保存为excel文件。 以下是实现上述功能的代码示例: ```python import pandas as pd # 读取txt文件并将其保存为dataframe对象 df = pd.read_csv('input.txt', sep='\t', header=None) # 提取包含关键字的行 keyword = '关键字' filtered_df = df[df.apply(lambda row: keyword in row.to_string(), axis=1)] # 将结果保存为excel文件 filtered_df.to_excel('output.xlsx', index=False, header=False) ``` 在上述代码中,`input.txt`是要读取的txt文件路径。你需要将其替换为你自己的文件路径。`关键字`是你要提取关键字,你也可以根据需要进行替换。最后,`output.xlsx`是保存提取结果的excel文件路径。你可以根据自己的需求进行更改。 请确保在运行代码之前已经安装了pandas库。你可以使用以下命令来安装pandas: ``` pip install pandas ``` 希望对你有所帮助! ### 回答3: 使用Python读取txt文件并提取表中关键字所在行保存为Excel,可以按照以下步骤操作: 1. 导入所需模块:首先需要导入openpyxl、xlwt和codecs等模块,openpyxl用于创建和写入Excel文件,xlwt用于保存Excel文件,codecs用于读取txt文件。 2. 打开txt文件:使用codecs模块中的open()函数打开待提取的txt文件,指定文件名和读取模式。 3. 创建Excel文件:使用openpyxl模块创建一个新的Excel文件,可以使用Workbook()函数创建空白的Excel工作簿。 4. 创建Excel表格并写入数据:使用openpyxl模块中的create_sheet()函数创建一个新的工作表,并使用append()函数将关键字所在行的数据写入到工作表中。 5. 保存Excel文件:使用xlwt模块的save()函数保存修改后的Excel文件,指定文件名和保存路径。 下面是一个简单的示例代码: ```python import codecs from openpyxl import Workbook import xlwt # 打开txt文件 with codecs.open('data.txt', 'r', encoding='utf-8') as file: lines = file.readlines() # 创建Excel文件 wb = Workbook() # 创建Excel表格并写入数据 sheet = wb.create_sheet(title='Sheet1') for line in lines: if '关键字' in line: # 根据关键字提取所在行 data = line.split('\t') # 假设数据以制表符分隔 sheet.append(data) # 保存Excel文件 wb.save('result.xls') ``` 以上代码将会读取名为data.txt的txt文件,提取包含关键字的行,并将其保存为result.xls的Excel文件。请注意,根据具体情况调整数据的分隔符和文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值