首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从2只熊猫数据中过滤元素

从2只熊猫数据中过滤元素
EN

Stack Overflow用户
提问于 2017-08-29 00:44:32
回答 1查看 87关注 0票数 1

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

这两种数据都包含月数据,但是它们跨越不同的时间跨度。一个是5年,另一个是10年。而且,两者没有相同数量的股票,只有80%的重叠。

下面是数据文件的一个示例:

代码语言:javascript
复制
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(),但是我很难访问每个数据的索引。例如:

代码语言:javascript
复制
df3=df1[df1.isin(df2)].dropna()

有人有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-29 01:28:24

对于列的交集:

代码语言:javascript
复制
column_intersection = df1.columns & df2.columns

对于行交叉口:

代码语言:javascript
复制
row_intersection = df1.index & df2.index

然后只对每个dataframe进行子集:

代码语言:javascript
复制
df1 = df1.loc[row_intersection, column_intersection]
df2 = df2.loc[row_intersection, column_intersection]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45929138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档