字符串操作到Dataframe

问题描述 投票:0回答:1

我从信用卡对帐单中提取了文本,仅对整个月内的交易进行了切片,并将其保存在列表中。该列表长度为404个字符串,该列表的摘录如下所示:

['Apr',
 '27',
 'UBER',
 'TECHNOLOGIES',
 'INC866-576-1039CA',
 '$10.93',
 'Apr',
 '27',
 'UBER',
 'TECHNOLOGIES',
 'INC866-576-1039CA',
 '$11.38',
 'Apr',
 '28',
 'COSTCO',
 'WHSE',
 '#1018HOUSTONTX',
 '$105.02']

如您所见,该列表遵循标准格式,其中一个事务由3个部分组成:Date(2个单独的字符串),Description(2-5个字符串)和Amount(1个字符串)。

我的目标是根据这些信息创建一个Pandas Dataframe,但是我无法找到一种方法来操纵字符串以正确地分割每个类别(日期,描述,金额)。我相信我需要使用正则表达式和循环的某种组合来实现这一目标。

根据评论,从信用卡对帐单(PDF)中提取的原始数据也显示如下:

" \nApr 27\nUBER TECHNOLOGIES\nINC866-576-1039CA\n$10.93\nApr 27\nUBER TECHNOLOGIES\nINC866-576-1039CA\n$11.38\nApr 28\nCOSTCO WHSE #1018HOUSTONTX\n$105.02\n"

python regex string pandas dataframe
1个回答
2
投票

您应该只使用原始原始文本,根据您的评论:

Apr 27
UBER TECHNOLOGIES
INC866-576-1039CA
$10.93
Apr 27
UBER TECHNOLOGIES
INC866-576-1039CA
$11.38
Apr 28
COSTCO WHSE #1018HOUSTONTX
$105.02

看来格式是:

DATE
VENDOR
[EXTRA INFO, OPTIONAL]
$AMOUNT

你可以在一个循环中读取这些行,如下所示:

txs = []
for line in file:
    date = pd.to_datetime(line)
    vendor = next(file)
    amount = next(file) # might not be amount yet
    while not amount.startswith('$'):
        vendor += amount
        amount = next(file)
    txs.append((date, vendor, amount))

# now create DataFrame
pd.DataFrame(txs)

这里的想法是以块的形式读取文件,每次事务循环一次迭代。

© www.soinside.com 2019 - 2024. All rights reserved.