我到Python非常新的,但我有PHP和R.一些经验将数据添加到数据框与Python(熊猫)
我炮制了下面的代码片段:
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
。但有一个问题:每个文件应该提取的内容应该是,每行。这个问题是Python替代a similar question I had for R。
比方说,我只有两个文件。第一个包含三行,第二个包含两行。
adapter.WR-PPF.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 . ></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-UEA.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>
中的句子并将其放入df
的列sentence
。文件的每一行都会在数据帧中获得自己的行。此外,我们还可以将正在读取的当前文件的文件名添加到列filename
(请参阅上面的最后一行代码)。
一个重要后果是,在上面的例子中,数据帧将与filename
adapter.WR-P-P-F和两个包括三排airbag.WS-U-E-A和所有具有不同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 . >
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
也许我的逻辑是关闭的,但我怎么看它:循环文件和行并立即向df
添加内容。但是,我不确定在Python中使用所有内容首先创建一个新列,然后将该内容附加到数据框是否更好?