使用Python(pandas)将数据从文件附加到数据框

时间:2015-08-14 16:43:40

标签: python numpy pandas dataframe

非常对Python很新,但我对PHP和R有一些经验。

我编造了以下代码段:

import os, glob, pandas as pd, numpy as np

# Create empty dataframe with correct column names
columns = ["fileName", "sentence" ]
df = pd.DataFrame(data=np.zeros((0,len(columns))), columns=columns)

# Create correct path where to fetch files
subdir = "\\testdata"
path = os.getcwd()+subdir

# Loop files in folder
for file in glob.glob(path+"\\*.lst"):
    # If file is readable 
    if os.access(file, os.R_OK):
        # Find lines inside files
        lines = [line.rstrip("\n") for line in open(file)]
        # For each line, do something
        for line in lines:
            # I need some help here
            print(os.path.basename(file)[:-4])
            print(line)

目标是循环文件,从这些文件中获取内容并将其附加到数据框df。但有一个问题:应该为每个文件提取每行内容。这个问题是a similar question I had for R的Python替代品。

让我们说为了示例我只有两个文件。第一行包含三行,后两行。

adapter.WR-P-P-F.lst

/home/nobackup/SONAR/COMPACT/WR-P-P-F/WR-P-P-F0000026.data.ids.xml:  <sentence>Een aanpassingseenheid ( adapter ) , aangebracht in een behuizing voornamelijk bestaande uit in- en uitvoereenheden , een koppeleenheid , een geheugeneenheid , een besturingseenheid ( met actieve en passieve elementen en monolitische geïntegreerde schakelingen ) en een elektrische voedingseenheid . &gt;</sentence>
/home/nobackup/SONAR/COMPACT/WR-P-P-F/WR-P-P-F0000026.data.ids.xml:  <sentence>Het toestel ( adapter ) draagt zorg voor de overbrenging van gegevens , met een snelheid van 10 Mbps ( megabits per seconde ) , tussen meerdere automatische gegevensverwerkende machines in een digitaal netwerk .</sentence>
/home/nobackup/SONAR/COMPACT/WR-P-P-F/WR-P-P-F0000034.data.ids.xml:  <sentence>Overwegende dat deze sensoren niet zijn ontworpen op de installatie van een gepantserde kabel ; dat de mogelijkheid moet worden geboden dat de gepantserde kabel niet verplicht wordt gesteld voor de aansluiting tussen de sensor en de adapter , maar alleen van de adapter naar het controleapparaat ; dat het bijgevolg noodzakelijk is de verordening dienovereenkomstig te wijzigen ;</sentence>

airbag.WS-U-E-A.lst

/home/nobackup/SONAR/COMPACT/WR-U-E-A/WR-U-E-A0000075.data.ids.xml:  <sentence>ja voor den airbag op te pompen eh :p</sentence>
/home/nobackup/SONAR/COMPACT/WR-U-E-A/WR-U-E-A0000129.data.ids.xml:  <sentence>Dobby , als ze valt heeft ze dan wel al ne airbag hee</sentence>

我想要实现的是Python循环遍历每个文件,然后遍历该文件中的每个并从中提取数据。比方说,我想获取每一行的内容并提取<sentence></sentence>中的句子并放入sentence的{​​{1}}列。因此,文件的每一行都将在数据帧上获得自己的行。此外,我们还可以将正在读取的当前文件的文件名添加到列df(请参阅上面的最后一行代码)。

一个重要的结果是,在上面的示例中,数据框将包含三行filename adapter.WR-PPF 和两行 airbag.WS-UEA < / em>并且所有人都使用不同的filename

上述示例的预期输出:

sentence

也许我的逻辑已关闭,但我是怎么看的:循环文件和行并立即将内容添加到fileName | sentence ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- adapter.WR-P-P-F Een aanpassingseenheid ( adapter ) , aangebracht in een behuizing voornamelijk bestaande uit in- en uitvoereenheden , een koppeleenheid , een geheugeneenheid , een besturingseenheid ( met actieve en passieve elementen en monolitische geïntegreerde schakelingen ) en een elektrische voedingseenheid . &gt; adapter.WR-P-P-F Het toestel ( adapter ) draagt zorg voor de overbrenging van gegevens , met een snelheid van 10 Mbps ( megabits per seconde ) , tussen meerdere automatische gegevensverwerkende machines in een digitaal netwerk . adapter.WR-P-P-F Overwegende dat deze sensoren niet zijn ontworpen op de installatie van een gepantserde kabel ; dat de mogelijkheid moet worden geboden dat de gepantserde kabel niet verplicht wordt gesteld voor de aansluiting tussen de sensor en de adapter , maar alleen van de adapter naar het controleapparaat ; dat het bijgevolg noodzakelijk is de verordening dienovereenkomstig te wijzigen ; airbag.WS-U-E-A ja voor den airbag op te pompen eh :p airbag.WS-U-E-A Dobby , als ze valt heeft ze dan wel al ne airbag hee 。但是,我不确定在Python中首先创建一个包含所有内容的新列然后将该内容附加到数据帧是否更好?

0 个答案:

没有答案