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

时间:2018-01-15 23:40:07

标签: python pandas dataframe

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

Dataframe(df)看起来像:

1   1 4 7
2   2 3 1
3   2 3 9

系列看起来像:

1   3
2   4 
3   2

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

1   T F F
2   T T T
3   F F F

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

4 个答案:

答案 0 :(得分:5)

使用lt,您可以指定一个轴。

df.lt(s, axis=0)

       1      2      3                   
1   True  False  False
2   True   True   True
3  False  False  False

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

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

s.values

答案 1 :(得分:3)

(df.T<s).T
#       0      1      2
#0   True  False  False
#1   True   True   True
#2  False  False  False

答案 2 :(得分:2)

使用[:,无],转换为系列

estimatedRowHeight

答案 3 :(得分:1)

您可以在比较之前重塑您的系列。然后,您可以利用numpy的{​​{3}}功能进行比较。

df = pd.DataFrame({'0': {1: 1, 2: 2, 3: 2}, '1': {1: 4, 2: 3, 3: 3}, '2': {1: 7, 2: 1, 3: 9}})
s = pd.Series([3, 4, 2])

s.values.reshape(3, 1) > df

    0       1       2
1   True    False   False
2   True    True    True
3   False   False   False