我正在尝试从50个csv文件创建单个数据帧。我只需要使用两列csv文件,即' Date'并且'关闭'。我尝试在for循环中使用df.join函数,但是它占用了大量的内存并且我得到错误" Killed:9"处理了近22-23个csv文件后。 所以,现在我尝试使用for循环创建一个只有2列的Dataframe列表,然后我尝试在循环函数之外连接dfs。
我有以下问题需要解决: - (i)虽然大多数csv文件的开始日期的开始日期为2000-01-01,但很少有csvs具有较晚的开始日期。所以,我希望主数据框应该包含所有日期,使用NaN或csv的空字段以及更晚的开始日期。 (ii)我希望将它们作为索引在日期中连接起来。
我的代码是: -
def compileData(symbol):
with open("nifty50.pickle","rb") as f:
symbols=pickle.load(f)
dfList=[]
main_df=pd.DataFrame()
for symbol in symbols:
df=pd.read_csv('/Users/uditvashisht/Documents/udi_py/stocks/stock_dfs/{}.csv'.format(symbol),infer_datetime_format=True,usecols=['Date','Close'],index_col=None,header=0)
df.rename(columns={'Close':symbol}, inplace=True)
dfList.append(df)
main_df=pd.concat(dfList,axis=1,ignore_index=True,join='outer')
print(main_df.head())
答案 0 :(得分:1)
您可以在read_csv或index_col=0
中使用dflist.append(df.set_index('Date'))
将Date列放入每个数据帧的索引中。然后使用轴= 1的pd.concat,Pandas将使用内部数据对齐来根据索引对齐所有数据帧。