根据Python中第二个数据帧中的列值过滤一个数据帧中的记录
我有两个 DataFrame df1 和 df2。
df1 是原始数据集,df2 是 df1 经过一些操作后生成的数据集。
在df1中,我有列'log',在df2中,我有列'log1'和' log2' 两列。
其中 'log1' 和 'log2' 列中的值包含在 df1 的 'log' 列中。
下面的 df2 示例
date id log1 log2
1 uu1q (2,4) (3,5)
1 uu1q (2,4) (7,6)
1 uu1q (3,5) (7,6)
5 u25a (4,7) (3,9)
5 uu25a (1,9) (3,9)
6 ua3b7 (1,1) (2,2)
6 ua3b7 (1,1) (3,3)
6 ua3b7 (2,2) (3,3)
df1 列示例以及下面的数据
date id log name col1 col2
1 uu1q (2,4) xyz 1123 qqq
1 uu1q (3,5) aas 2132 wew
1 uu1q (7,6) wqas 2567 uuo
5 u25a (4,7) enj 666 ttt
5 fff (0,0) ddd 0 lll
现在我想根据每行的列值从 df1 获取/过滤所有记录在 df2 中,即基于 'date'
、'id'
、'log1'
或 'log2 '
并将其与中的列进行比较df1 即 '日期'
、'id'
、'日志'
。
注意:值列'log1'和'log2'包含在单列'log'中
I have two DataFrame df1 and df2.
df1 is the original dataset and df2 is the dataset made from df1 after some manipulation.
In df1 I have column 'log' and in df2 I have column 'log1' and 'log2' two columns.
where the values in columns 'log1' and 'log2' contains in column 'log' in df1.
df2 sample below
date id log1 log2
1 uu1q (2,4) (3,5)
1 uu1q (2,4) (7,6)
1 uu1q (3,5) (7,6)
5 u25a (4,7) (3,9)
5 uu25a (1,9) (3,9)
6 ua3b7 (1,1) (2,2)
6 ua3b7 (1,1) (3,3)
6 ua3b7 (2,2) (3,3)
df1 column sample with data below
date id log name col1 col2
1 uu1q (2,4) xyz 1123 qqq
1 uu1q (3,5) aas 2132 wew
1 uu1q (7,6) wqas 2567 uuo
5 u25a (4,7) enj 666 ttt
5 fff (0,0) ddd 0 lll
Now I want to take fetch/filter all the records from df1 based on column values for each row in df2 i.e. based on 'date'
, 'id'
, 'log1'
or 'log2'
and compare it with columns in df1 i.e.'date'
, 'id'
, 'log'
.
NOTE: values columns 'log1' and 'log2' contained in single column 'log'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
IIUC,您正在寻找链式
isin
:输出:
IIUC, you're looking for a chained
isin
:Output:
使用
DataFrame.melt
用于来自log1、log2...
列的log
列以及过滤DataFrame.merge
:Use
DataFrame.melt
for columnlog
fromlog1, log2...
columns and for filtering inner join inDataFrame.merge
: