Python读取一个文件并将其附加到lin的数据帧行中

2024-10-01 17:40:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以用Python读取一个文件,然后将每一行的数据直接附加到Pandas数据帧中吗?在

我要分析的数据包含在电子邮件正文中:

enter image description here

我尝试使用RegEx捕获以下数据:

物种GB EAST cod, GB blackback

扇区NEFS 5

954, 30,000

价格$0.83, $0.07

以及日期09/01/2014

但事实证明很难捕捉到所有这些。。。在

我可以很容易地得到日期,因为它总是出现在Sent:之后,我使用RegEx来捕获Sent:之后的所有内容,然后使用dateutil来捕获日期。在

扇区也很简单,我只需要用RegEx搜索20个扇区中的一个,如果它看到其中一个扇区,它就会捕获它。在

但是,捕捉物种、体重和价格数据并确保它们正确排列,并将它们整齐地放入数据帧中,这是我的难题。所以我现在的想法是只捕获邮件正文中的每一行,并将捕获的内容分解为数据帧的不同列。在

我知道这不是最干净的捕获,但我宁愿得到太多的数据,只是在以后手动删除一些数据,而不是没有足够的数据。在

所以我的问题是:有了Python,我可以读取一个文件并将我读到的所有内容都传输到Pandas数据帧中吗?在


Tags: 文件数据内容pandas物种电子邮件价格regex
2条回答

是的,一旦文件中有数据,就可以使用熊猫.read_csv('文件名.csv'). 有关详细信息,请查看pandas.read_csv。在

这是一个过于具体的功能,我为阅读你的邮件的鱼部分,一旦我把它放在一个文本文件。它假设你已经提取了日期和扇区。在

它可能不完全适用于您的实现,但希望python字符串方法的使用将使您走上正确的方向,并向您展示如何将它们全部添加到数据帧中。在

def fish_to_frame(fish_file, sector, date):
    # Initialize some lists
    species = []
    pounds = []
    prices = []
    date = pd.to_datetime(date, infer_datetime_format=True)
    with open(fish_file) as f:
        for line in f:
            # Fish: weight @ price
            fish, remainder = line.split(':')
            if '@' in remainder:
                weight, price = remainder.split('@')
            if 'trade' in remainder:
                weight, price = remainder.split('to ')
            weight = weight.strip(' lbs')
            species.append(fish)
            pounds.append(weight)
            prices.append(price)
    fish_frame = pd.DataFrame({'Species':species,
                              'Sector':sector,
                              'Pounds':pounds,
                              'Prices':prices,
                              'Date':date})
    return fish_frame

你可以在那里做一些额外的步骤,把权重等转换成数字等等。希望这有帮助!在

另外一个步骤可以是将它与已有的数据帧和那些已经存在的列结合起来。但是逐行添加新条目会很慢(er)。在

相关问题 更多 >

    热门问题