将数据框列与系列进行比较

Lot*_*har 3 python dataframe pandas

我有一个数据框和一个系列,并希望将DF列与系列进行比较.

Dataframe(df)看起来像:

1   1 4 7
2   2 3 1
3   2 3 9
Run Code Online (Sandbox Code Playgroud)

系列看起来像:

1   3
2   4 
3   2
Run Code Online (Sandbox Code Playgroud)

想要进行布尔比较(其中列值小于系列值):

1   T F F
2   T T T
3   F F F
Run Code Online (Sandbox Code Playgroud)

当然我可以做一个循环,但应该有更简单的方法来做到这一点?

cs9*_*s95 5

使用lt,您可以指定轴.

df.lt(s, axis=0)

       1      2      3                   
1   True  False  False
2   True   True   True
3  False  False  False
Run Code Online (Sandbox Code Playgroud)

1默认情况下,轴使用重载运算符<并不能提供这种灵活性.正如评论中提到的DYZ,axis默认为1这里是一个例外,因为它通常默认为0(在其他函数中,如applytransform).


如果系列和数据框索引不能很好地对齐,您仍然可以通过比较s.values来解决这个问题.

df.lt(s.values, axis=0)

       1      2      3                   
1   True  False  False
2   True   True   True
3  False  False  False
Run Code Online (Sandbox Code Playgroud)

  • "轴默认为1" - 这有点违反直觉,因为对于大多数Pandas功能,轴0是默认轴. (2认同)

DYZ*_*DYZ 3

(df.T<s).T
#       0      1      2
#0   True  False  False
#1   True   True   True
#2  False  False  False
Run Code Online (Sandbox Code Playgroud)