此问题已在此处有答案:
Python-pandas: the truth value of a series is ambiguous(2个答案)
15天前关闭。
条件独立工作,但作为if
的一部分添加,会使真理变得模糊:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(10,5), columns=list('ABCDE'))
df1
# df1.loc[(df1.D > 1.25) | (df1.D < -0.25)] # work
# df1.loc[:,'D'] > 0.1 # work
if df1.loc[:,'D'] > 0.1:
print(df1['A'] * df1['B'])
参考:Truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
1条答案
按热度按时间pqwbnv8z1#
df.loc[:,'D'] > 0.1
给出了一个包含true和false值的向量:不确定如何将true和false的向量转换为单个值。你可以假设所有:
if (df1.loc[:,'D'] > 0.1).all():
,任意:if (df1.loc[:,'D'] > 0.1).any():
,或者迭代:如果不知道你想做什么,python和我只是猜测。
所以看你的编辑,我认为你试图将A和B相乘,然后取
D > 0.1
时的值,这很容易:(df1['A'] * df1['B'])[(df1.loc[:,'D'] > 0.1)]