AttributeError: у объекта DataFrame нет атрибута Patient_col - PullRequest
1 голос
/ 22 апреля 2020

Привет, у меня есть следующий код

def check_for_leakage(df1, df2, patient_col):

    df1_patients_unique = set(df1.patient_col.unique())
    df2_patients_unique = set(df2.patient_col.unique())
    patients_in_both_groups = list(df1_patients_unique.intersection(df2_patients_unique))
    leakage = len(patients_in_both_groups) > 0 # boolean (true if there is at least 1 patient in both groups)

    return leakage

, и когда я запускаю

# test
print("test case 1")
df1 = pd.DataFrame({'patient_id': [0, 1, 2]})
df2 = pd.DataFrame({'patient_id': [2, 3, 4]})
print("df1")
print(df1)
print("df2")
print(df2)
print(f"leakage output: {check_for_leakage(df1, df2, 'patient_id')}")

, я получаю следующую ошибку:

AttributeError: У объекта «DataFrame» нет атрибута «Patient_col»

Я пробовал несколько вещей, но не могу понять, как решить эту проблему. Я также не могу найти подходящих ответов на мою проблему.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Внесите следующие изменения в функцию:

def check_for_leakage(df1, df2, patient_col):

    df1_patients_unique = set(df1[patient_col].unique())
    df2_patients_unique = set(df2[patient_col].unique())
    patients_in_both_groups = list(df1_patients_unique.intersection(df2_patients_unique))
    leakage = len(patients_in_both_groups) > 0 # boolean (true if there is at least 1 patient in both groups)

    return leakage

print("test case 1")
df1 = pd.DataFrame({'patient_id': [0, 1, 2]})
df2 = pd.DataFrame({'patient_id': [2, 3, 4]})
print("df1")
print(df1)
print("df2")
print(df2)
print(f"leakage output: {check_for_leakage(df1, df2, 'patient_id')}")

Output:
test case 1
df1
   patient_id
0           0
1           1
2           2
df2
   patient_id
0           2
1           3
2           4
leakage output: True
0 голосов
/ 22 апреля 2020

Вы должны вызывать имя столбца в скобках:


    df1_patients_unique = set(df1[patient_col].unique())
    df2_patients_unique = set(df2[patient_col].unique())

Нотация с df1.column работает только с реальными именами столбцов. Вы не можете ввести переменную здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...