使用相同的列和相同的索引连接许多panda数据帧

2024-09-28 01:32:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有很多大数据帧,大约7000帧。这些数据框是从1965年到2017年的股票价格。我使用的第一列是日期作为索引。还有另外三个栏目:每天的低价、高价和成交量。我在一个循环中访问它们,每次我看到一个不同的日期窗口。例如从1965年到1970年。有没有办法将我所有的数据帧合并到一个数据帧中?我想要的是每一个日期都有:低,高,每一个股票名称的数量。这样会更有效率。一个重要的想法是,对于某些股票,某些日期缺失,因此并非每个股票的行数都相同。我想的是一个包含所有日期的所有股票价格的列表。以下是我的数据: https://www.kaggle.com/borismarjanovic/price-volume-data-for-all-us-stocks-etfs/metadata


Tags: 数据https列表数量www股票股票价格办法
1条回答
网友
1楼 · 发布于 2024-09-28 01:32:51

您可以读取第一个文件。重命名列以包含_pex

df = pd.read_csv('/kaggle/input/Data/ETFs/pex.us.txt')
renamed = ['Date']
renamed += [str(col) + '_pex' for col in df.columns[1:]]
df.columns = renamed

然后,您可以循环浏览这些文件,每次都给出后缀,即您从文件名获得的股票名称。然后将其与原始数据帧合并,如下所示:

counter = 0
for filename in os.listdir('/kaggle/input/Data/ETFs/'):
    if filename == 'pex.us.txt':
        continue
    name = (filename.split('.')[0])
    data = pd.read_csv('/kaggle/input/Data/ETFs/'+filename)
    renamed = ['Date']
    renamed += [str(col) + '_' + name for col in data.columns[1:]]
    data.columns = renamed
    df = pd.merge(df, data, on='Date', how='outer')
    counter +=1
    if counter == 5:
        break

请注意,我放置了一个计数器,这样您可以停止并查看结果,进行更改,然后重试。 我在kaggle的在线笔记本上的时间用完了,然后当我说“重新连接”时,我得到了一个不同的目录,我不确定这是怎么回事,但希望你能明白。在执行how='outer'联接时,在合并的df中获得的日期行应该是合并的两个数据帧中的日期的并集,这样就可以解决每个文件中并非所有日期都相同的问题

相关问题 更多 >

    热门问题