我是Python的新手,正在寻找一个简单的解决方案。
我在一个文件夹中有几个具有相同结构(列数和行数)的.csv文件。路径是:C:\ temp
现在,我想将所有这些.csv文件读取到一个新的数据框中,然后将其导出为新的.csv文件。
到目前为止,我已经手动读取每个.csv文件并将其保存到pandas数据框中。
这是一个例子:
df1 = pd.read_csv(r "C:\temp\df1.csv", header= None)
df2 = pd.read_csv(r "C:\temp\df2.csv", header= None)
df1
0 id Feature
1 1 12
2 2 13
3 3 14
4 4 15
5 5 16
6 7 17
7 8 15
8 9 12
9 10 13
10 11 23
然后,我使用.append合并数据帧。
df_new = df1.append(df2)
0 id Feature
1 1 12
2 2 13
3 3 14
4 4 15
5 5 16
6 7 17
7 8 15
8 9 12
9 10 13
10 11 23
0 id Feature
1 1 14
2 2 9
3 3 3
4 4 8
5 5 9
6 7 1
7 8 32
8 9 7
9 10 3
10 11 12
df_new.to_csv('df_new.csv', index=False)
不幸的是,此版本始终带有标头,但我不需要它。所以我后来手动删除了它。
没有更快的版本吗?我正在考虑一个for循环,该循环会打开路径中所有现有的.csv文件,并将它们逐行读取到新的数据帧中,并在循环结束时从中生成一个.csv文件?不幸的是我没有循环经验。
我感谢您的帮助。
In [1]: import pandas as pd
In [2]: from io import StringIO
In [3]: df = pd.read_csv(StringIO("""0 id Feature
...: 1 1 12
...: 2 2 13
...: 3 3 14
...: 4 4 15
...: 5 5 16
...: 6 7 17
...: 7 8 15
...: 8 9 12
...: 9 10 13
...: 10 11 23"""), sep=' ')
In [4]: df1 = pd.read_csv(StringIO("""0 id Feature
...: 1 1 14
...: 2 2 9
...: 3 3 3
...: 4 4 8
...: 5 5 9
...: 6 7 1
...: 7 8 32
...: 8 9 7
...: 9 10 3
...: 10 11 12"""), sep=' ')
In [10]: pd.concat([df, df1])
Out[10]:
0 id Feature
0 1 1 12
1 2 2 13
2 3 3 14
3 4 4 15
4 5 5 16
5 6 7 17
6 7 8 15
7 8 9 12
8 9 10 13
9 10 11 23
0 1 1 14
1 2 2 9
2 3 3 3
3 4 4 8
4 5 5 9
5 6 7 1
6 7 8 32
7 8 9 7
8 9 10 3
9 10 11 12
In [11]: %timeit pd.concat([df, df1])
188 µs ± 4.86 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
In [14]: df.append(df1)
Out[14]:
0 id Feature
0 1 1 12
1 2 2 13
2 3 3 14
3 4 4 15
4 5 5 16
5 6 7 17
6 7 8 15
7 8 9 12
8 9 10 13
9 10 11 23
0 1 1 14
1 2 2 9
2 3 3 3
3 4 4 8
4 5 5 9
5 6 7 1
6 7 8 32
7 8 9 7
8 9 10 3
9 10 11 12
In [15]: %timeit df.append(df1)
197 µs ± 4.09 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
熊猫版本为“ 1.1.3”
您可以清楚地检查出pd.concat
它比更快df.append(df1)
。
对于循环,您可以使用文件名创建一个变量,并使用for循环保存这些文件的数据帧列表,如下所示
filename = ['1.csv', '2.csv']
dfs = []
for name in filename:
dfs.append(pd.read_csv(name))
new_df = pd.concat(dfs)
这也是容易,有效,清洁和快速的。
然后将文件保存到csv。
new_df.to_csv(out_filename)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句