gpt4 book ai didi

Python:将字段值提取到新列中,写入Excel

转载 作者:行者123 更新时间:2023-12-01 06:24:51 25 4
gpt4 key购买 nike

我正在读取 CSV 文件并打算写入 Excel 文件。 CSV 文件只有两列,但我想在写入 Excel 之前使用正则表达式提取列数据并创建新列。

CSV 文件:test.csv

name, file_info
test, c:\folder1\subfolder1\subfolder2\example.xls | history 12345 at 2020-01-01

这是我到目前为止的代码:

import csv

with open('test.csv',mode='r') as testFile
reader = csv.DictReader(testFile, delimiter=',')
for row in reader:
### This is where i assume i need to perform the regex operation on the current row

我想将文件名 (example.xlsx)、历史记录 (12345) 和日期 (2020-01-01) 提取为Excel 文件中的列。

我成功测试了正则表达式

"\\([^\\|]*)\s*\|\"

我确信有多种方法可以做到这一点。 Pandas 会更好吗?我可以通过以下方式简单地读取文件并将其写入 Excel:

df = pd.read_csv('test.csv')
df.to_excel('text.xlsx)

我没有任何使用 Pandas 的经验,所以不知道如何使用正则表达式执行我想要的操作并将其连接在一起。

最终产品是一个包含五 (5) 列的 Excel 电子表格

名称 |路径|文件 |历史|日期

最佳答案

这是一种使用 Pandas 的技术 df['column'].str.extract()功能。

您可以将已编译(或未编译)的正则表达式字符串传递到 extract()功能。这将使用表达式中的命名组并将这些组提取到具有相同名称的列中。

示例数据:

name,file_info
test1,c:\folder1\subfolder1\subfolder2\example1.xls | history 12345 at 2020-01-01
test2,c:\folder1\subfolder1\subfolder2\example2.xls | history 24687 at 2020-01-12
test3,c:\folder1\subfolder1\subfolder2\example3.xls | history 33445 at 2020-01-13
test4,c:\folder1\subfolder1\subfolder2\example4.xls | history 55664 at 2020-01-14

代码:

import os
import pandas as pd
import re

# Define constants
COLS = ['name', 'path', 'file', 'history', 'date']
PATH = './test.csv'
PATH_XL = './test.xlsx'
RE_EXP = re.compile(r'^'
'(?P<path>.*)\|\shistory\s'
'(?P<history>\d+)\sat\s'
'(?P<date>\d{4}-\d{2}-\d{2})$',
re.IGNORECASE)

# Read CSV file.
df = pd.read_csv(PATH)
# Create new columns using named regex groups.
df[['path', 'history', 'date']] = df['file_info'].str.extract(RE_EXP)
# Extract the filename from the path using a built-in function.
df['file'] = df['path'].apply(os.path.basename)
# Convert date to datetime format.
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d').dt.date
# Subset DataFrame to only the columns we require.
df = df[COLS]
# Write results to Excel.
df.to_excel(PATH_XL, index=False)

Excel 输出:

enter image description here

关于Python:将字段值提取到新列中,写入Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60215070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com