Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pandas(和glob?)合并目录中的多个(csv)数据文本文件_Python_Arrays_Csv_Pandas_Glob - Fatal编程技术网

Python 使用pandas(和glob?)合并目录中的多个(csv)数据文本文件

Python 使用pandas(和glob?)合并目录中的多个(csv)数据文本文件,python,arrays,csv,pandas,glob,Python,Arrays,Csv,Pandas,Glob,我有许多单独的X,Y(整数)列数据的仪器文件。所有数组都是相同的维度。每个文件的X列相同,Y列编号不同。如果可能,我想将连续文件的Y列连接到第一个文件,并编写一个包含第一个X和多个Y的新大型数组?像这样: file1=X1 Y1 file2=X1 Y2 file3=X1 Y3…新文件结果应为:X1 Y1 Y2 Y3… 我们一直在研究以下方面的变化: 导入熊猫 data=pandas.read\u csv('file1.csv')) #打印(数据)返回第一个文件数组ok 需要打开并循环连续文件以

我有许多单独的X,Y(整数)列数据的仪器文件。所有数组都是相同的维度。每个文件的X列相同,Y列编号不同。如果可能,我想将连续文件的Y列连接到第一个文件,并编写一个包含第一个X和多个Y的新大型数组?像这样:

file1=X1 Y1 file2=X1 Y2 file3=X1 Y3…
新文件结果应为:
X1 Y1 Y2 Y3…

我们一直在研究以下方面的变化:

导入熊猫
data=pandas.read\u csv('file1.csv'))
#打印(数据)返回第一个文件数组ok

需要打开并循环连续文件以将Y列连接到文件1。

您可以执行以下操作:

import os
import glob
import pandas as pd

def get_merged_csv(flist, **kwargs):
    return pd.concat([pd.read_csv(f, **kwargs).set_index('X') for f in flist], axis=1).reset_index()

path = 'C:/Users/csvfiles'
fmask = os.path.join(path, '*mask*.csv')

df = get_merged_csv(glob.glob(fmask))
要命名您的
Y
列,如
Y1
Y2
等:

cols = ['{0[0]}{0[1]}'.format(t) for t in zip(df.columns[1:], range(1, len(df.columns)))]
df.columns = df.columns.tolist()[:1] + cols
测试数据:

a、 csv:

X,Y
1,11
2,12
3,13
b、 csv:

X,Y
1,21
2,22
3,23
c、 csv:

X,Y
1,31
2,32
3,33
测试:


嘿,马祖,这真是太棒了!!!我用它在几秒钟内构建了一个巨大的数据帧。由于我对Python相当陌生,您对写出“df”的结果有什么建议吗?我还可以将df传递给MatPlotLib进行绘图吗?@numpystack,关于写出结果-如果您指的是性能,您可能需要阅读。关于Matplotlib,您必须指定要打印的内容和方式
In [215]: df = get_merged_csv(glob.glob(fmask))

In [216]: df
Out[216]:
   X   Y   Y   Y
0  1  11  21  31
1  2  12  22  32
2  3  13  23  33

In [217]: cols = ['{0[0]}{0[1]}'.format(t) for t in zip(df.columns[1:], range(1, len(df.columns)))]

In [218]: cols
Out[218]: ['Y1', 'Y2', 'Y3']

In [219]: df.columns = df.columns.tolist()[:1] + cols

In [220]: df
Out[220]:
   X  Y1  Y2  Y3
0  1  11  21  31
1  2  12  22  32
2  3  13  23  33