I am getting the error when I make a comparison on a single element in a dataframe, but I don't understand why.
I have a dataframe df with timeseries data for a number of customers, with some null values within it:
df.head()
8143511 8145987 8145997 8146001 8146235 8147611
2012-07-01 00:00:00 NaN NaN NaN NaN NaN NaN
2012-07-01 00:30:00 0.089 NaN 0.281 0.126 0.190 0.500
2012-07-01 01:00:00 0.090 NaN 0.323 0.141 0.135 0.453
2012-07-01 01:30:00 0.061 NaN 0.278 0.097 0.093 0.424
2012-07-01 02:00:00 0.052 NaN 0.278 0.158 0.170 0.462
In my script, the line
if pd.isnull(df[[customer_ID]].loc[ts]):
generates an error:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
However, if I put a breakpoint on the line of script, and when the script stops I type this into the console:
pd.isnull(df[[customer_ID]].loc[ts])
the output is:
8143511 True
Name: 2012-07-01 00:00:00, dtype: bool
If I allow the script to continue from that point, the error is generated immediately.
If the boolean expression can be evaluated and has the value True
, why does it generate an error in the if expression? This makes no sense to me.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…