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

时间:2017-08-29 00:44:32

标签: python pandas dataframe

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

两个数据框都包含月度数据,但它们的时间跨度不同。一年是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 个答案:

答案 0 :(得分:1)

列交叉点

componentDidMount() {
 const self = this;

 ....

 self.friendChat(self.id);

}

表示行交集:

column_intersection = df1.columns & df2.columns

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

row_intersection = df1.index & df2.index