python - 将数据框与从应用函数创建的另一个数据框合并?
问题描述
我有一个df
工资数据的数据框:
State,Annual Salary
New York, 132826
New Hampshire,128704
California,127388
Vermont,121599
Idaho,120011
还有一个函数,get_taxes_from_api
它调用 API 并将输入的州和年薪的税号作为只有 1 行的数据框返回,如下所示:
State,annual.fica.amount,annual.federal.amount,annual.state.amount
North Carolina,8918,40334,6364
它是类型:<class 'pandas.core.frame.DataFrame'>
不是系列。我想在 df 的每一行上调用 API,然后合并每个生成的 1 行数据帧。就像是:
State,Annual Salary,annual.fica.amount,annual.federal.amount,annual.state.amount
North Carolina, 116500,8918,40334,6364
New York, 132826, . . .
New Hampshire,128704, . . .
California,127388, . . .
Vermont,121599, . . .
Idaho,120011, . . .
我该怎么做呢?我遇到了一个错误,我的 lambda 下面创建了一个系列而不是数据框,所以像这里'https://stackoverflow.com/a/62849468/2415706'一样使用 result_type=expand 进入了这个兔子洞,但它仍然坏了:
all_tax_df = df[['State','Annual Salary']].apply(lambda row: get_taxes_from_api(row['State'],row['Annual Salary']), axis=1, result_type='expand')
# merge all_tax_df with df on 'State'
解决方案
您只需将应用结果直接分配给新列即可:
df[["annual.fica.amount","annual.federal.amount","annual.state.amount"]]=(
df[['State','Annual Salary']].apply(lambda row: get_taxes_from_api(row['State'],row['Annual Salary']), axis=1)
)
如果您在一次调用 api 时获得整个数据帧(这可能更有效),那么合并将是一个好主意
推荐阅读
- javascript - 使用 $resource 工厂无法发布纯文本数据
- solidity - 通过使用 dapp 的服务器地址对数据进行签名来限制用户与合约方法的交互
- node.js - FFMPEG - aws 控制台问题
- android -
一个带有 fab 按钮的 xml 文件 - php - 插入换行符php函数
- php - Laravel 5 在现有数据库上迁移
- javascript - How do you get a list of all class children in JavaScript?
- rabbitmq - RabbitMQ start fail: Ranch listener permission denied
- entity-framework - 将嵌套的 T-SQL 选择查询转换为 linq
- c# - c# arrays out of bounds