我有一个数据框和一个系列,并希望将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
当然我可以做一个循环,但应该有更简单的方法吗?
答案 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