pandas不输出表格的数据框

时间:2016-12-29 17:41:29

标签: regex python-3.x pandas glob

我一直致力于从大量文件中提取数据。我想形成一个数据表,文件库名称为最左列,数值数据在下一列。到目前为止,我一直在测试包含8个文件的文件夹,但我希望能够读取数百个。

我尝试过添加索引,但这似乎会导致更多问题。我附上了我提出的最接近的工作代码,以及输出。

在:

import re, glob
import pandas as pd

pattern = re.compile('-\d+\D\d+\skcal/mol', flags=re.S)
for file in glob.glob('*rank_*.pdb'):
    with open(file) as fp:
        for result in pattern.findall(fp.read()):
            Dock_energy = {file:[],result:[]}
            df = pd.DataFrame(Dock_energy)
            df.append(df)
    df = df.append(df)
    print(df)

这似乎适用于提取数据,但它不是我想要的形式。

输出:

Empty DataFrame
Columns: [-10.02 kcal/mol, MII_rank_8.pdb]
Index: []
Empty DataFrame
Columns: [-12.51 kcal/mol, MII_rank_5.pdb]
Index: []
Empty DataFrame
Columns: [-13.47 kcal/mol, MII_rank_4.pdb]
Index: []
Empty DataFrame
Columns: [-14.67 kcal/mol, MII_rank_2.pdb]
Index: []
Empty DataFrame
Columns: [-13.67 kcal/mol, MII_rank_3.pdb]
Index: []
Empty DataFrame
Columns: [-14.80 kcal/mol, MII_rank_1.pdb]
Index: []
Empty DataFrame
Columns: [-11.45 kcal/mol, MII_rank_7.pdb]
Index: []
Empty DataFrame
Columns: [-12.47 kcal/mol, MII_rank_6.pdb]
Index: []

导致破碎表的原因是什么,为什么我的列与我希望的相反?任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

这应该更接近你的意图:

all_data = []
for file in glob.glob('*rank_*.pdb'):
    with open(file) as fp:
        file_data = []
        for result in pattern.findall(fp.read()):
            file_data.append([file, result])
    all_data.extend(file_data)
df = pd.DataFrame(all_data, columns=['file', 'result'])
print(df)