Pandas最有效的比较数据框(DataFrame)和序列(Series)的方法

4

我有一个形状为 (n, p) 的数据框和一个长度为 n 的序列。

可以使用以下代码进行比较:

for i in df.keys(): df[i] > ts

是否有一行代码可以实现此操作,例如:df > ts。 如果是,那么它是否更有效率?

1个回答

7

我认为你需要使用DataFrame.gt函数:

print (df.gt(s, axis=0))

样例:

df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[7,8,9],
                   'D':[1,3,5],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (df)
   A  B  C  D  E  F
0  1  4  7  1  5  7
1  2  5  8  3  3  4
2  3  6  9  5  6  3

s = pd.Series([1,2,3])
print (s)
0    1
1    2
2    3
dtype: int64

print (df.gt(s, axis=0))
       A     B     C      D     E      F
0  False  True  True  False  True   True
1  False  True  True   True  True   True
2  False  True  True   True  True  False

如果需要其他比较函数:
  • lt:小于
  • gt:大于
  • le:小于等于
  • ge:大于等于
  • ne:不等于
  • eq:等于

这看起来不错。双重比较是可能的吗?例如s<df<S - Donbeo
嗯,这更加复杂,但我认为这可以工作:print ((df.gt(s, axis=0)) | (df.lt(s1, axis=0))) - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接