通过字典键链接嵌套列表中的对象



我目前是来自Kiva Kaggle比赛的这些数据集:https://www.kaggle.com/kiva/data-science-for-good-kiva-crowdfunding/data

我想将浮动"MPI"值("多维贫困指数"(链接到每笔小额贷款的相应地理区域。

  • 在一个数据集中kiva_mpi_region_locations.csv每个区域都有一个与之关联的相应 MPI 值。
  • 但是,在数据集kiva_loans.csv中,每笔贷款都有一个"区域",数据通常在同一单元格中具有多个值,以逗号 (,( 分隔。

['kiva_loans.csv'/贷款数据示例](注意,不同的贷款可以来自同一区域,因此在这种情况下,区域是外键,但不是主键(:

Loan #: 653338  
region: Tanjay, Negros Oriental 

[kiva_mpi_region_locations.csv/区域 MPI 值示例](注意,每个区域在主键中只有一个 MPI 作为区域(:

region: Badakhshan
MPI: 0.387

到目前为止我的代码:

RegionMPI = dict(zip(dfLocations.region, dfLocations.MPI))
{'Badakhshan': 0.387,
'Badghis': 0.466,
'Baghlan': 0.3,
'Balkh': 0.301,
'Bamyan': 0.325,
'Daykundi': 0.313,
etc}
LoanRegion = dfLoanTheme['region'].str.split(',').values.tolist()
[['Lahore']
nan,
['Dar es Salaam'],
['Liloy-Dela Paz'],
['Tanjay', ' Negros Oriental'],
['Ica'],
nan,
['Lahore']]

关于如何循环浏览我的嵌套列表,然后使用我的字典键将我的字典中的相应值链接到我的列表,以便该键在我的列表中出现的所有内容,有什么建议吗?

您希望对region字段上的两个数据帧执行mergepandas库使这变得非常容易(也是高性能的(。代码如下所示(您的CSV文件位于Kaggle注册墙后面(:

import pandas as pd
loans = pd.read_csv('kiva_loans.csv')
mpi_regions = pd.read_csv('kiva_mpi_region_locations.csv')
df = loans.merge(mpi_regions, on='region')

你真的不想通过在基础 Python 中编写自己的连接代码来重新发明轮子,已经使用 pandas 包了。

(请注意,您假设region在各个国家/地区都是独一无二的。合并这两个on=['country','region']可能更安全

(

最新更新