我目前有大约 500 个时间序列数据的 csv 文件。我正在使用此代码加入他们:
from glob import glob
with open('master.csv', 'a') as singleFile:
for csv in glob('*data.csv'):
if csv == 'master.csv':
pass
else:
for line in open(csv, 'r'):
singleFile.write(line)
但是这样有个问题,每个文件的标题都不一样,因为第一行是公司的名单,现在随着时间的推移,有的公司退休了,有的公司上市了,所以不一致当我向下滚动我的合并文件时。
为了说明我的问题,我会做一个例子:
目前这是我的前三个 csv 文件的格式。
我想要的输出是这样的:
目前我通过手动移动列来达到我想要的输出,在合并我的文件时有什么方法 python 可以检测到一个新列并将它移动到右边吗?
非常感谢!
最佳答案
数据
1.csv
:
a,b
1,2
1,2
2.csv
:
b,c
2,3
2,3
3.csv
:
c,d
3,4
3,4
Pandas
您可以使用 pandas至 load并将 CSV 文件转换为数据帧。之后你可以 concatenate他们到一个单一的数据框可以be saved回到 CSV 文件。
一个完整的例子:
from glob import glob
import pandas as pd
df = pd.concat([pd.read_csv(f, delimiter=',') for f in glob('*.csv') if not f.startswith('all.csv')], ignore_index=True, sort=False)
print(df)
# a b c d
# 0 1.0 2.0 NaN NaN
# 1 1.0 2.0 NaN NaN
# 2 NaN NaN 3.0 4.0
# 3 NaN NaN 3.0 4.0
# 4 NaN 2.0 3.0 NaN
# 5 NaN 2.0 3.0 NaN
df.to_csv('all.csv', index=False)
# a,b,c,d
# 1.0,2.0,,
# 1.0,2.0,,
# ,,3.0,4.0
# ,,3.0,4.0
# ,2.0,3.0,
# ,2.0,3.0,
图片来源:https://pandas.pydata.org/pandas-docs/version/0.20/merging.html
关于python - 如何在不同标题的python中加入时间序列数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54525536/