熊猫:将多个(约30个)表合并在一起?

时间:2016-07-13 19:20:27

标签: python-3.x pandas

所以我目前在这个格式的文件夹中有30多个单独的表:

Name1 = pd.read_csv('Name1.txt')

姓名1:

         A    B    C    D    
type1    1    1    NaN  4
type2    2    0    NaN  2
type3    3    2.1  NaN  .2
type4    1    2    NaN  1

所以我有30个这样的表,并希望得到一个完整的表,看起来像这样:

       Name1/A  Name1/B Name1/D  Name2/A Name2/B Name2/C ...... Name30/C 
type1    1        1       4       ...     ...     ...             ...         
type2    2        0       2       ...     ...     ...             ...
type3    3        2.1     .2      ...     ...     ...             ...
type4    1        2       1       ...     ...     ...             ...

我一直在尝试使用for循环来读取数据并使用pd.concat(...)但它似乎没有做任何事情

我想我的一个主要问题是弄清楚我是如何创建一个结合了所有这些不同图表的数据框,而不必为所有30个表执行pd.read_csv('NameX.txt')然后将它们全部合并一起。 我假设for循环将是这个的主要救星,但每次我尝试在for循环中读取它们时,它告诉我无法找到该文件。

另外,如果它有帮助,我的文件以“Name1.txt”,“Name2.txt”,“Name3.txt”等命名,依此类推,type1到type4列也不会改变图表和值为NaN的列应在最终较大的表中删除。

任何建议都会令人惊叹!谢谢你!

2 个答案:

答案 0 :(得分:1)

尝试:

names = ['Name{}'.format(i) for i in xrange(1, 31)]
files = ['{}.txt'.format(n) for n in names]

df = pd.concat([pd.read_csv(f, index_col=0) for f in files],
               axis=1, keys=names)

cols = df.columns.to_series()
df.columns = cols.str.get(0).astype(str) + '/' + cols.str.get(1)

df.iloc[:, :10]

enter image description here

答案 1 :(得分:1)

如果您不在一个DataFrame中搜索所有内容,可以尝试Pandas Panel

dfs = {n:pd.read_csv('Name{}.txt'.format(n) for n in range(1,30)}
panel = pd.Panel(dfs)

有关详情,请查看this