首页 文章

从2个pandas数据帧中过滤元素

提问于
浏览
1

我有两个数据框,代表随时间推移的股票价格和随时间推移的股票相关信息(例如公司的基本数据) .

两个数据框都包含月度数据,但它们的时间 Span 不同 . 一个是5年,另一个是10年 . 此外,两者都没有相同数量的股票,只有80%的重叠 .

以下是数据帧的示例:

days1 = pd.date_range(start ='1/1 / 1980',end ='7/1 / 1980',freq ='M')

df1 = pd.DataFrame(np.random.randn(6,4),columns = list('ABCD'),index = days1)

days2 = pd.date_range(start ='1/1 / 1980',end ='5/1 / 1980',freq ='M')

df2 = pd.DataFrame(np.random.randn(4,6),columns = list('ABCDEF'),index = days2)

我的目标是将两个数据帧都减少到内部关节 . 也就是说,两者都涵盖相同的时间段并包含相同的股票 . 我的索引包含日期,列名称是股票名称 .

我尝试过merge()等多种变体,但是那些重新创建了一个合并的数据帧,我想保留两个数据帧 . 我也尝试过isin(),但我正在努力访问每个数据帧的索引 . 例如:

DF3 = DF1 [df1.isin(DF2) . dropna()

有人有什么建议吗?

1 回答

  • 1

    对于列交叉点:

    column_intersection = df1.columns & df2.columns
    

    对于行交叉:

    row_intersection = df1.index & df2.index
    

    然后只是每个数据帧的子集:

    df1 = df1.loc[row_intersection, column_intersection]
    df2 = df2.loc[row_intersection, column_intersection]
    

相关问题