df.loc - ValueError:缓冲区的维数错误(预期为 1,得到 0)

我目前有以下代码 - 我正在尝试根据列在一个数据框中获取匹配的行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


江户川乱折腾
浏览 161回答 1
1回答

翻过高山走不出你

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 Name0       John     Smith 1       Jane       Doe2       John       Doe   Last Name Type0     Smith    A1       Doe    Bdf1.merge(规则)输出是:    First Name  Last Name   Type0       John    Smith   A1       Jane    Doe     B2       John    Doe     B这是你渴望的答案吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python