python数据框水平追加列

时间:2017-06-27 07:45:56

标签: python pandas dataframe append concat

我正在尝试创建一个简单的脚本,用于连接或附加我从目录中的xls文件中提取的多个列集。每个xls文件的格式为:

Index    Exp. m/z   Intensity   
1        1000.11    1000
2        2000.14    2000
3        3000.15    3000

每个文件都有不同数量的索引。以下是我的代码:

import pandas as pd
import os
import tkinter.filedialog

full_path = tkinter.filedialog.askdirectory(initialdir='.')
os.chdir(full_path)

data = {}
df = pd.DataFrame()

for files in os.listdir(full_path):
    if os.path.isfile(os.path.join(full_path, files)):
        df = pd.read_excel(files, 'Sheet1')[['Exp. m/z', 'Intensity']]
        data = df.concat(df, axis=1)

data.to_excel('test.xls', index=False)

这会产生一个attributerror:DataFrame对象没有属性concat。我也试过使用追加像:

data = df.append(df, axis=1) 

但我知道append没有axis关键字参数。 df.append(df)确实有效,但它将列放在底部。我想要这样的东西:

Exp. m/z   Intensity       Exp. m/z   Intensity  
1000.11    1000            1001.43    1000
2000.14    2000            1011.45    2000
3000.15    3000

等等。因此,我从每个文件中提取的列集应放在前一列集的右侧,其间有一个列空间。

1 个答案:

答案 0 :(得分:2)

我认为您需要append DataFrames列出,然后pd.concat

dfs = []
for files in os.listdir(full_path):
    if os.path.isfile(os.path.join(full_path, files)):
        df = pd.read_excel(files, 'Sheet1')[['Exp. m/z', 'Intensity']]
        #for add empty column 
        df['empty'] = np.nan
        dfs.append(df)
data = pd.concat(dfs, axis=1)