если условие в строках и столбцах рекурсивное - PullRequest
1 голос
/ 17 июня 2019

Ошибка при применении, если условия в строках и столбцах 2 разных информационных фреймов.

df1

X1  X2  X3  X4  X5
10  12  8   4   6

df2 

class       MARKS
class_1     8
class_2     6
class_3     9
class_4     10
class_5     11
class_6     8
class_7     5
class_8     4
class_9     7
class_10    5

ожидаемый результат:

class 1     Y       Y   FALSE   FALSE   FALSE
class 2     Y       Y   Y       FALSE   FALSE
class 3     Y       Y   FALSE   FALSE   FALSE
class 4     FALSE   Y   FALSE   FALSE   FALSE
class 5     FALSE   Y   FALSE   FALSE   FALSE
class 6     Y       Y   FALSE   FALSE   FALSE
class 7     Y       Y   Y       FALSE   Y
class 8     Y       Y   Y       FALSE   Y
class 9     Y       Y   Y       FALSE   FALSE
class 10    Y       Y   Y       FALSE   Y

formula: =IF($A$2>$I2,"Y")
FOR CLASS 1 - I2 WILL BE CONSTANT 

например: где A2 = 10 из df1 и I2 = 8из df2.Если 10> 8, выведите Y, иначе условие не выполнится, и выведите FALSE.

FOR CLASS 2 - I3 WILL BE CONSTANT 
FORMULA =IF($A$2>$I3,"Y")

Аналогично, где B2 = 12 OF DF1 и I3 = 6 OF df2, поэтому, если 12> 6, выведите Y, условие else не выполнится ипечать ЛОЖЬ.

code i tried: 

df1 = pd.read_csv("df1.csv")
df2 = pd.read_csv("df2.csv")
y = df2.MARKS

Res = apply(data[3,],2,function(x)
        if x <= y:
            print("FALSE")
    else: 
        print("Y")
Res

ERROR: 
File "<ipython-input-27-083bd28bed08>", line 2
if x <= y:
         ^
SyntaxError: invalid syntax

Пожалуйста, помогите.

1 Ответ

1 голос
/ 17 июня 2019

Использование np.less.outer для широковещательного сравнения всех значений от df1 с df2


a = df1.values.ravel()
b = df2.MARKS.values

pd.DataFrame(np.where(np.less.outer(b, a), 'Y', 'FALSE'), index=df2['class'])
# If you don't really want 'Y' and 'FALSE', replace those values with what you do want

              0  1      2      3      4
class
class_1       Y  Y  FALSE  FALSE  FALSE
class_2       Y  Y      Y  FALSE  FALSE
class_3       Y  Y  FALSE  FALSE  FALSE
class_4   FALSE  Y  FALSE  FALSE  FALSE
class_5   FALSE  Y  FALSE  FALSE  FALSE
class_6       Y  Y  FALSE  FALSE  FALSE
class_7       Y  Y      Y  FALSE      Y
class_8       Y  Y      Y  FALSE      Y
class_9       Y  Y      Y  FALSE  FALSE
class_10      Y  Y      Y  FALSE      Y
...