Pandas - 使用另一个数据帧过滤数据帧

Oum*_*b10 1 python filter dataframe pandas

我有两个数据帧,长度相同

df1: 
   density
1  1,45
2  3,87
3  4,35
4  2,87
5  0.74
6  9.34
7  3.087
8  0.28
9  6,47
10 5,59
Run Code Online (Sandbox Code Playgroud)

第二个数据框看起来像这样

df2:
  State
1  1
2  1
3  1
4  1
5  1
6  1
7  0
8  0
9  0
10 0
Run Code Online (Sandbox Code Playgroud)

我想要一个看起来像这样的输出,这意味着过滤器df1只保留df2等于1的值:

output: 
   density
1  1,45
2  3,87
3  4,35
4  2,87
5  0.74
6  9.34
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?你能帮我吗.

raf*_*elc 5

这应该工作

df1[df2.State.astype(bool)]
Run Code Online (Sandbox Code Playgroud)


Sco*_*ton 5

让我们使用布尔索引:

df1[df2.eq(1).values]
Run Code Online (Sandbox Code Playgroud)

输出:

  density
1    1,45
2    3,87
3    4,35
4    2,87
5    0.74
6    9.34
Run Code Online (Sandbox Code Playgroud)

  • @piRSquared仍然困惑哪个是我的答案,哪个是斯科特的 (4认同)
  • 相互编辑很可爱. (3认同)