pandas - 如何在 pandas 的数据框中划分值?
问题描述
所以我有一个原始数据集: original_data_set
我从 csv 文件中读取,然后根据字段分开:
像这样,loan_df = re_df.loc[re_df.field == 'loan_amount'] home_df = re_df.loc[re_df.field == 'home_value']
我想在两个数据帧的值字段上进行划分,但是当我尝试时ltv_df = loan_df['value']/home_df['value']
,我得到了一系列 NaN 值。
有没有人有什么建议?
解决方案
两种选择:
如果只是values
需要的 numpy 除法工作:
ltv_df = loan_df['value'].values / home_df['value'].values
[0.57238284 1.30293486]
或者,如果需要使用 DataFrame set_index
,则除以reset_index
返回 DataFrame:
ltv_df = (
loan_df.set_index('loan_id')['value'] /
home_df.set_index('loan_id')['value']
).reset_index(name='result')
loan_id result
0 1 0.572383
1 2 1.302935
或者,可以通过apply
和直接从初始 DataFrame 获取值np.divide
:
ltv_df = (
re_df.groupby('loan_id')['value'].apply(lambda x: np.divide(*x))
.reset_index(name='result')
)
loan_id result
0 1 0.572383
1 2 1.302935
数据框设置:
import numpy as np
import pandas as pd
re_df = pd.DataFrame({'loan_id': [1, 1, 2, 2],
'field': ['loan_amount', 'home_value'] * 2,
'value': [65037, 113625, 84395, 64773]})
loan_df = re_df.loc[re_df.field == 'loan_amount']
home_df = re_df.loc[re_df.field == 'home_value']
推荐阅读
- javascript - 在特定按钮单击时显示导航
- amazon-web-services - AWS Application Load Balancer 无法处理内容编码 gzip 和内容类型 application/json 的请求正文
- swift - 不能将 Nil 分配给类型“计时器”?
- cdi - 如何使用 org.jboss.weld.proxy.dump?
- node.js - 如何在解析器(查询或突变)中编写私有函数?
- uml - 协作/沟通图是否有“OPT”片段?
- excel - 如何提取大写单词(至少有两个字母)
- flutter - 如何使键盘超出我的内容?
- applescript - Applescript:仅当尚未选中时如何单击复选框?
- javascript - 在 vue-cli3 中将我的源代码从一台机器移动到另一台机器