两个熊猫值之间的if语句

时间:2018-11-22 12:10:53

标签: python pandas dataframe for-loop if-statement

我想用两个熊猫数据帧的值(如果要比较的值在第0列中)做一个if语句:

编辑:

首先,我想检查df1值大于df2值的次数。

for row in df1:
    if df1[0] > df2[0]:
       Print('Ok')
    else:
       Print('not OK')

我得到的是:

  

ValueError:系列的真值不明确。使用空   a.bool(),a.item(),a.any()或a.all()。

编辑2:

由于我没有时间尝试您的所有建议,并且由于我需要快速解决方案,所以我的理解如下:

excessLoadB1l=[]

indexYB1=loadC1C2B1.index.tolist()

tempLB1=energyBalanceB1['sumSupply_B1'].tolist()

for item in tempLB1:

    if item < 0:

        item=item

    else:

        item=0

    excessLoadB1l.append(item)

excessLoadB1=pd.DataFrame({'excessLoadB1':excessLoadB1l}).set_index([indexYB1])

我从正值和负值中创建了一个列表

  

tempLB1 = energyBalanceB1 ['sumSupply_B1']。tolist()

我想将其分为两个不同的DataFrame。我从

借了索引
  

indexYB1 = loadC1C2B1.index.tolist()

以及正值:

excessSupplyB1l=[]

indexZB1=loadC1C2B1.index.tolist()

tempSB1=energyBalanceB1['sumSupply_B1'].tolist()

for item in tempSB1:

    if item > 0:

        item=item

    else:

        item=0

    excessSupplyB1l.append(item)


excessSupplyB1=pd.DataFrame({'excessSupplyB1':excessSupplyB1l}).set_index([indexZB1])

4 个答案:

答案 0 :(得分:2)

快一点

for i, j in enumerate(df.itertuples()):
    if j[0] > df1[0].iloc[i]:
        print("OK")
    else:
        print("Not OK")

答案 1 :(得分:1)

不确定要查找的内容。

如果您要比较来自不同数据帧的单个列:

df1[0].gt(df2[0])

如果您将一个数据框的所有列与另一数据框的单个列进行比较:

df1.gt(df2[0], axis=0)

如果要比较两个数据框中的所有列:

df1.gt(df2)

将其添加到上述任何一项中以获取“确定”和“不正确”,而不是“真,假”:

.replace([1, 0], ['Ok', 'not OK'])

答案 2 :(得分:0)

count = 0    

for i, row in df1.iterrows():
    if row[0] > df2.loc[i,0]:
        print('Ok')
        count += 1

    else:
        print('not OK')

print ('%d times item in df1 was greater than df2' %count)

答案 3 :(得分:0)

您可以合并两个数据框,然后在np.where中添加一列:

df['result'] = np.where(df1['column1'] > df2['column2'], 'ok', 'not ok')

+

df[df.result == 'ok'].count()  

另外,是从b2002借来的;

df_ = df1[0].gt(df2[0])
(df_ == 1).sum()