gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:42 24 4
gpt4 key购买 nike

我拖了三个具有重复行的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com