Python Pandas:索引值和布尔值比较

时间:2016-03-14 06:17:35

标签: python pandas

考虑这个数据框:

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().

切片错了吗?如何切割两个值并进行比较?

2 个答案:

答案 0 :(得分:1)

yourfilename.writelines(yourlist)选择最后一项的范围,只需要df.A[-1:]

答案 1 :(得分:0)

您可以[-1]使用ilocvalues的最后一列相比较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]