применить условие if else, используя dataframe - PullRequest
0 голосов
/ 18 июня 2019

С кодом ниже я могу видеть данные, есть одна строка и два столбца. Я хочу сделать выбор:

  1. если оба столбца равны 0, сделать что-то
  2. если оба больше 0, то сделать что-то.

Я получаю ошибку в условии if. Может кто-нибудь, пожалуйста, помогите мне это сделать?

Комментарий: OP публикует пример набора данных здесь или URL

from pyspark.sql import * 
import pandas as pd
query = "(Select empID, empDept from employee)"

df1 = spark.read.jdbc(url=url, table=query, properties=properties)
df1.show()

if df1[empID]==0 && df1[empDept]==0:
    print("less than zero")
elif df1[empID]>0 && df1[empDept]>0:
    print("greather than 0")
else 
    print("do nothing")

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

В вашем правописании есть ошибки:

  1. заменить && на and
  2. else: (отсутствует ':')

Попробуйте это:

import pandas as pd
import numpy as np

dat = np.array([[0, 0]])
df1 = pd.DataFrame(data=dat)


if df1.loc[0, 0]==0 and df1.loc[0, 1]==0:
    print("less than zero")
elif df1.loc[0, 0]==0 and df1.loc[0, 1]>0:
    print("greather than 0")
else:
    print("do nothing")
0 голосов
/ 18 июня 2019

В вашем скрипте несколько синтаксических ошибок. Попробуйте приведенный ниже модифицированный код.

import numpy as np
if np.sum((df1["empID"]==0) & (df1["empDept"]==0)):
    print("less than zero")
elif np.sum((df1["empID"]>0) & (df1["empDept"]>0)):
    print("greather than 0")
else: 
    print("do nothing")

Обратите внимание, что любое сравнение столбцов фрейма данных (например, df1 ["empID"] == 0) будет возвращать серию логических значений, поэтому необходимо обрабатывать их как ряды, а не обычную переменную.

df1:

    empID  empDept
0   1       1 

Выход:

greather than 0
...