考虑这个数据框:
index = pd.Index(list(range(5)), name='rows')
columns = pd.Index(['A', 'B', 'C'], name='cols')
df = pd.DataFrame(np.random.randn(5, 3), index=index, columns=columns)
if df.A[-1:] < df.B[-1:] and df.B[-1:] > df.C[-1:] :
print True
在这里,我试图比较两个值而不是两个数组,但是pandas会产生这个值错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
切片错了吗?如何切割两个值并进行比较?
答案 0 :(得分:1)
yourfilename.writelines(yourlist)
选择最后一项的范围,只需要df.A[-1:]
。
答案 1 :(得分:0)
您可以[-1]
使用iloc
与values
的最后一列相比较if (df.A.iloc[-1] < df.B.iloc[-1]) & (df.B.iloc[-1] > df.C.iloc[-1]):
True
:
Series
您可以尝试添加all
来比较if (df.A[-1:] < df.B[-1:]).all() & (df.B[-1:] > df.C[-1:]).all():
True
:
numpy arrays
或values
用于比较if ((df.A[-1:] < df.B[-1:]).values) & ((df.B[-1:] > df.C[-1:]).values):
True
:
if (df.A[-1:].values < df.B[-1:].values) & (df.B[-1:].values > df.C[-1:].values):
True
或者:
#return Series
print df.A[-1:]
rows
4 0.251539
Name: A, dtype: float64
#return numpy array
print df.A[-1:].values
[ 0.25153871]
#return value
print df.A.iloc[-1]
0.251538705128
说明:
mainItem.Fields[Sitecore.FieldIDs.ValidFrom]