如何有条件地从数据帧中的两列计算的变量中选择行?

2024-05-20 13:17:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python非常陌生,这感觉好像它会有一个非常简单的答案,但我还没有弄清楚。我试图只打印布尔变量中的真行,该布尔变量使用数据帧中的两列计算。下面是我的输出示例,但我只希望返回真值。你知道吗

输入代码的最后4行包含我一直在尝试的内容,它返回以下ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。你知道吗

在SQL中,我尝试执行的操作类似于:Select*From table Where rows='True'

谢谢你的帮助!你知道吗

输入:

df = pd.DataFrame(index=['TTWO','ROKU','PERI'])
for i in range(range):
    df.loc[['TTWO'],i]=si.get_live_price('TTWO')
    df.loc[['ROKU'],i]=si.get_live_price('ROKU')
    df.loc[['PERI'],i]=si.get_live_price('PERI')
    a = df.iloc[:,-1]
    b = df.iloc[:,-2]
    a_minus_b=((a-b)/b)*100
    d = a_minus_b >= 0  
    if d == True:        #What I have been trying
        print(d)
    else:
        print('no significant results')

示例输出,如果我只是在print(d)处结束代码(没有if语句):

TTWO  False
ROKU  True
PERI  False

Tags: 代码livetrue示例dfgetrangeprice
2条回答

IIUC,这可能是你需要的。 如果你有如下的数据帧

        A   B   C   D
TTWO    2   12  52  50
ROKU    3   13  55  60
PERI    4   14  73  70

使用以下代码

(((df['D']-df['C'])/df['C'])*100)>=0

输出

TTWO    False
ROKU     True
PERI    False
df = pd.DataFrame(index=['TTWO','ROKU','PERI'])
d = []
for i in range(range):
    df.loc[['TTWO'],i]=si.get_live_price('TTWO')
    df.loc[['ROKU'],i]=si.get_live_price('ROKU')
    df.loc[['PERI'],i]=si.get_live_price('PERI')
    a = df.iloc[:,-1]
    b = df.iloc[:,-2]
    a_minus_b=((a-b)/b)*100
    d.append(a_minus_b >= 0) 
df['somename'] = d
print(df[df['somename'] == True])

在这里我打印了你的预期结果,但你可以做任何事。 希望有帮助

相关问题 更多 >