pandas Python if语句获取:'序列的真值是模糊的' [重复]

ecr0jaav  于 2023-06-20  发布在  Python
关注(0)|答案(1)|浏览(119)

此问题已在此处有答案

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

pqwbnv8z

pqwbnv8z1#

df.loc[:,'D'] > 0.1给出了一个包含true和false值的向量:

Out[1]: 
0    False
1    False
2    False
3    False
4     True
5     True
6    False
7    False
8    False
9    False
Name: D, dtype: bool

不确定如何将true和false的向量转换为单个值。你可以假设所有:if (df1.loc[:,'D'] > 0.1).all():,任意:if (df1.loc[:,'D'] > 0.1).any():,或者迭代:

for item in (df1.loc[:,'D'] > 0.1):
    if item:
        print('something')

如果不知道你想做什么,python和我只是猜测。
所以看你的编辑,我认为你试图将A和B相乘,然后取D > 0.1时的值,这很容易:
(df1['A'] * df1['B'])[(df1.loc[:,'D'] > 0.1)]

相关问题