Der*_*ntz 2 python dataframe pandas
我有一些代码在 cron(通过 kubernetes)上运行了几个月。
昨天,我的部分代码无法正常工作:
突然间,这个声明不再是“True”(df_temp 和 df_temp4 中都有数据:
if ( len(df_temp > 0) & len(df_temp4 > 0)):
print "HERE"
Run Code Online (Sandbox Code Playgroud)
然而,这有效:
if ( len(df_temp > 0) and len(df_temp4 > 0)):
print "HERE"
Run Code Online (Sandbox Code Playgroud)
是否存在某种代码推送会导致此更改?由于我已经运行这段代码几个月了,不确定什么会导致该语句突然失败。
和len(df_temp > 0)
可能len(df_temp4 > 0)
不会达到您的预期。pandas DataFrame 的比较运算符返回逐元素结果,这意味着它们创建一个布尔 DataFrame,其中每个值指示 DataFrame 中的相应值是否大于零:
>>> import pandas as pd
>>> df = pd.DataFrame({'a': [-1,0,1], 'b': [-1,0,1]})
>>> df
a b
0 -1 -1
1 0 0
2 1 1
>>> df > 0
a b
0 False False
1 False False
2 True True
Run Code Online (Sandbox Code Playgroud)
所以len
of 与ofdf
相同:len
df > 0
>>> len(df)
3
>>> len(df > 0)
3
Run Code Online (Sandbox Code Playgroud)
“&”与“和”的区别
它们的含义不同:
由于您具体询问了 pandas(假设至少一个操作数是 NumPy 数组、pandas Series 或 pandas DataFrame):
&
也指按元素“按位与”。and
,但必须使用一个函数,即numpy.logical_and
。有关更多解释,您可以参考“Python 中‘and’(布尔值)与‘&’(按位)之间的差异。为什么列表与 numpy 数组的行为存在差异?”
不知道什么会导致这个声明突然失败。
您没有提供“失败”或预期的行为,因此不幸的是我无法帮助您。