Python/Pandas 从 DataFrames 中过滤掉唯一的行

标签 python pandas

我拖了三个具有重复行的 DataFrame。

In [31]: df1
Out[31]: 
    member           time
0       0 2009-09-30 12:00:00
1       0 2009-09-30 18:00:00
2       0 2009-10-01 00:00:00
3       1 2009-09-30 12:00:00
4       1 2009-09-30 18:00:00
5       2 2009-09-30 12:00:00
6       3 2009-09-30 12:00:00
...

In [32]: df2
Out[32]: 
    member           time
0       0 2009-09-30 12:00:00
1       0 2009-09-30 18:00:00
3       1 2009-09-30 12:00:00
4       2 2009-09-30 12:00:00
5       2 2009-09-30 18:00:00
6       2 2009-10-01 00:00:00
...

我想从 df1 和 df2 中过滤掉具有唯一值 'member' 和 'time' 的行,并得到一个只包含具有共同值 'member' 和 'time' 的行的 DataFrame在df1和df2中,也就是

In [33]: df_duplicated_1_and_2
Out[33]: 
    member           time
0       0 2009-09-30 12:00:00
1       0 2009-09-30 18:00:00
3       1 2009-09-30 12:00:00
4       2 2009-09-30 12:00:00
...

有没有一种高效而优雅的方法来做到这一点?

更新 如果可能的话,我不想得到一个新的合并数据帧,而是一个过滤后的数据帧。例如,

In [34]: df1
Out[34]: 
    member           time           value
0       0 2009-09-30 12:00:00  a
1       0 2009-09-30 18:00:00  b
2       0 2009-10-01 00:00:00  c
3       1 2009-09-30 12:00:00  d
4       1 2009-09-30 18:00:00  e
5       2 2009-09-30 12:00:00  f
6       3 2009-09-30 12:00:00  g
...

In [35]: df1_filtered_out
Out[35]: 
    member           time           value
0       0 2009-09-30 12:00:00  a
1       0 2009-09-30 18:00:00  b
3       1 2009-09-30 12:00:00  d
4       2 2009-09-30 12:00:00  g
...

并得到过滤后的 df2。

最佳答案

membertime 列进行内部联接:

>>> df1.merge(df2, on=['member', 'time'], how='inner')
   member                time
0       0 2009-09-30 12:00:00
1       0 2009-09-30 18:00:00
2       1 2009-09-30 12:00:00
3       2 2009-09-30 12:00:00

这将产生一个结果,该结果仅包含两个 DataFrame 中具有相同 membertime 值的行。

更新:

>>> df1.merge(df2[['member', 'time']])
   member                time value
0       0 2009-09-30 12:00:00     a
1       0 2009-09-30 18:00:00     b
2       1 2009-09-30 12:00:00     d
3       2 2009-09-30 12:00:00     f

关于Python/Pandas 从 DataFrames 中过滤掉唯一的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18954752/

相关文章:

python - 如何从 Python 中创建的 Dataframe 中删除索引?

python - Spyder 的 DataFrame 查看器中的背景颜色和列最小/最大选项被禁用

python-3.x - Pandas 使用值(如果不为空),否则使用下栏中的值

Python - 我的 MySQL 查询中的错误在哪里?

python - += 运算符等效的 numpy 数组

python - 验证文件未被修改

python - 我可以在 Windows 7 中离线安装 Django 吗?

python - pandas dataframe : groupby, 应用函数返回数组并映射回结果

python - 在django中接收发送邮件的发送列表

python - Pandas 测量条件为真时耗时