【发布时间】:2017-05-13 00:23:56
【问题描述】:
我在每个目录中有 10 个具有相同文件名的不同子目录(每个目录 20 个文件),第 0 列是每个文件中的索引列。
例如
**strong text**DIRECTORY A
- data_20170101_k.csv
- data_20170102_k.csv
- data_20170102_k.csv
- data_20170103_k.csv
- data_20170104_k.csv
- data_20170105_k.csv
.....
.....
- data_20170120_k.csv
**DIRECTORY B**
- data_20170101_k.csv
- data_20170102_k.csv
- data_20170102_k.csv
- data_20170103_k.csv
- data_20170104_k.csv
- data_20170105_k.csv
.....
.....
- data_20170120_k.csv
**DIRECTORY C**
- data_20170101_k.csv
- data_20170102_k.csv
- data_20170102_k.csv
- data_20170103_k.csv
- data_20170104_k.csv
- data_20170105_k.csv
.....
.....
- data_20170120_k.csv
Each of the above files contains 6 columns and index_col = 0 with NO
column headers
**DIRECTORY FILES_MERGED**
- data_20170101_k.csv
- data_20170102_k.csv
- data_20170102_k.csv
- data_20170103_k.csv
- data_20170104_k.csv
- data_20170105_k.csv
.....
.....
- data_20170120_k.csv
我想合并每个子目录中具有相同名称的所有文件 进入 1 个具有相同名称的文件并将新文件保存在新的子目录中 例如 DIRECTORY FILES_MERGED with INDEX = Column 0. 合并文件 每个文件中只有一个索引列包含 1,2,3,4,5 列 每个目录的同名
我已将 csv 文件读入 pandas 数据帧
df= pd.read_csv(filename, sep=",", header = None, usecols=[0, 1, 2, 3, 4, 5])
这是数据框的格式
我最初的原始数据框:
0 1 2 3 4 5
0 1451606820 1.0862 1.08630 1.08578 1.08578 25
1 1451608800 1.0862 1.08630 1.08578 1.08610 10
2 1451608860 1.0862 1.08620 1.08578 1.08578 16
3 1451610180 1.0862 1.08630 1.08578 1.08578 27
4 1451610480 1.0858 1.08590 1.08560 1.08578 21
5 1451610540 1.0857 1.08578 1.08570 1.08578 2
6 1451610600 1.0857 1.08578 1.08570 1.08578 2
7 1451610720 1.0857 1.08578 1.08570 1.08578 2
8 1451610780 1.0857 1.08578 1.08570 1.08578 2
Column '0' = Datetime in Epoch time
Columns 1,2,3,4,5 are values
【问题讨论】:
-
您可以使用
os.listdir()或os.walk()循环目录和文件,使用文件名作为键和数据框列表作为值创建dict,然后pd.concat()进行合并将列表放入一个数据帧中以供输出。 -
@VictorChubukov - 从技术上讲,
pd.concat()的默认设置是为 dfs 附加一个不同于合并的操作。如果 OP 可以明确预期的结果是合并(列绑定)或追加(行绑定/堆栈),我们可以提供准确的帮助。