【发布时间】:2018-10-17 01:03:58
【问题描述】:
我有 2 个数据框,其中有一列名为 frames。数据帧是关于从两个参与者同时录制的 2 个视频中提取的数据。由于跟踪失败,数据缺少一些帧(每个视频不同)。我想根据帧整数值df['frame']取一个交集。
这里发布了一个类似的问题:Pandas - intersection of two data frames based on column entries ,但接受的答案是连接,而不是交集。
示例数据
import pandas as pd
df1 = pd.DataFrame(data={'frame': [1, 2, 3]})
df2 = pd.DataFrame(data={'frame': [2, 3, 4]})
期望的输出
删除了不在df1['frame'] 和df2['frame'] 联合中的行
>>> print(df1)
frame
1 2
2 3
>>> print(df2)
frame
0 2
1 3
(我可以在使用df1.reset_index(drop=True) 完成处理后重置索引)
试过
我想首先获取两个数据框的框架列的交集:
df1_idx = df1['frame']
df2_idx = df2['frame']
intersection_idx = df1_idx.intersection(df2_idx)
错误:
File "/*python_path*/site-packages/pandas/core/generic.py", line 3081, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'intersection'
在获得两个数据帧中的帧索引后,我正在考虑做类似的事情(在:dropping rows from dataframe based on a "not in" condition 中提到):
df1 = df1.drop(df[~df['frame'].isin(intersection_idx)])
系统
Python 3.6.5 和安装了 Anaconda 的 pandas 0.22.0。
【问题讨论】:
标签: python pandas dataframe set-intersection