你可以这样做:
import pandas as pd
import numpy as np
from glob import glob
dfs_list = []
for csv_file in glob('Tickers List/*.csv'):
stock_ticker = csv_file.split(".")[0]
df = pd.read_csv(csv_file,header=None, names=["date","num"])
if df.shape[0] >0:
df["date"] = pd.to_datetime(df["date"],format="%Y-%m-%d")
df["stock_ticker"] = stock_ticker
dfs_list.append(df)
final_df = pd.concat(dfs_list)
使用glob('dir/*.csv'),我们可以将所有 csv 文件放在一个文件夹中。
在此之后,您将拥有一个如下所示的 DataFrame:
如果你想改变你的格式,你可以这样做:
(请注意,日期会自动排序,因为用作索引)。
final_df = pd.pivot_table(final_df, values='num', index=['date'],
columns=['stock_ticker'], fill_value=np.nan)
您将拥有一个如下所示的 DataFrame:
现在您可以使用以下方法将此 DataFrame 写入新的 csv:
final_df.to_csv("merged.csv")
完整代码
import pandas as pd
import numpy as np
from glob import glob
dfs_list = []
for csv_file in glob('Tickers List/*.csv'):
stock_ticker = csv_file.split(".")[0]
df = pd.read_csv(csv_file,header=None, names=["date","num"])
if df.shape[0] >0:
df["date"] = pd.to_datetime(df["date"],format="%Y-%m-%d")
df["stock_ticker"] = stock_ticker
dfs_list.append(df)
final_df = pd.concat(dfs_list)
final_df = pd.pivot_table(final_df, values='num', index=['date'],
columns=['stock_ticker'], fill_value=np.nan)
final_df.to_csv("merged.csv")