2016-08-24 99 views
-1

我有这样的代码追加几个熊猫dataframes不工作

import os 
import pandas as pd 
path = r'c:\Temp\factory' 
os.chdir(path) 
files = os.listdir() 
files_csv = [f for f in files if f[-3:] == 'csv'] 

x = pd.DataFrame() 

for f in files_csv: 
    data = pd.read_csv(f, sep=';', encoding='latin-1') 
    x = x.append(data, ignore_index=True) 

我已经使用了相同的代码之前串连CSV文件,但现在它只是不工作。

我面对的问题是,只有一个文件的内容使其通过名称x到数据框。

我知道我处理所有文件,我期望x数据框总共包含10000行左右,但我只能得到一个文件aproximatley 2000行的内容。

我的文件通常是这样的:

Computer;Managed by;Given Name 
cp1;user1;olle 
cp2;user2;niklas  
cp3;user3;kalle 
+0

即使没有您的csv文件的样本,也不可能诊断出问题所在。另外,追加并不是导入多个文件的可行方式---请参阅[本答案](http://stackoverflow.com/a/38943704/509824)以获得更好的方法。 –

+0

我添加了示例文件。我试过你的例子,但AttributeError:'模块'对象没有属性'加入' –

+0

我其实试过了你的建议的修改版本,但我得到了与我的代码相同的结果。我只得到我的最终数据框中的一个文件,我无法弄清楚为什么 –

回答

0

我之前需要做同样的事情。我的解决方案是:

x = pd.DataFrame() 

for f in files_csv: 
    data = pd.read_csv(f, sep=';', encoding='latin-1') 
    x = pd.concat([x, data], ignore_index=True, axis=1) 
+0

如果我使用你的代码设置轴= 0,我得到的结果与我的代码相同 –

+0

axis = 1似乎连接了所有的横向的CSV文件,每个文件都添加新的列。我想连接垂直这就是为什么我将轴更改为0 –

+0

您是否试图用第一个文件初始化x而不是空白DataFrame? – magnoliafork