df.loc - ValueError: в буфере неверное количество измерений (ожидается 1, получено 0) - PullRequest
0 голосов
/ 12 октября 2019

В настоящее время у меня есть следующий код - я пытаюсь получить совпадающую строку в одном кадре данных на основе столбца Last Name.

def rule(row):
    name = row['Last Name']
    return rules.loc[rules['Last Name'] == name]['Type']

df['Type'] = df.apply(rule, axis=1)

При выполнении этого я получаю сообщение об ошибке из-за== name в методе rule - как мне это исправить?

ValueError: ('Buffer has wrong number of dimensions (expected 1, got 0)', 'occurred at index 0')

Вот как выглядит rules:

  Last Name      Type
0     Smith         A
1     Doe           B

и df:

             Name First Name Last Name
0      John Smith      John      Smith
1        Jane Doe      Jane      Doe
2        John Doe      John      Doe

Я хочу, чтобы финал выглядел так:

             Name First Name Last Name  Type
0      John Smith      John      Smith     A
1        Jane Doe      Jane      Doe       B
2        John Doe      John      Doe       B

РЕДАКТИРОВАТЬ: Добавлен пример rules и df

1 Ответ

2 голосов
/ 12 октября 2019
df1 = pd.DataFrame({'First Name': ['John', 'Jane','John'], 'Last Name': ['Smith','Doe','Doe']})
print(df1)

rules = pd.DataFrame({'Last Name':['Smith', 'Doe'], 'Type': ['A','B']})
print(rules)

Вывод:

    First Name Last Name
0       John     Smith 
1       Jane       Doe
2       John       Doe
   Last Name Type
0     Smith    A
1       Doe    B

df1.merge (rules)

вывод:

    First Name  Last Name   Type
0       John    Smith   A
1       Jane    Doe     B
2       John    Doe     B

это ваш ответ на вопрос?

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