【发布时间】:2017-07-30 08:00:26
【问题描述】:
Dataframe1 = IndicatorDF - columns ['Code', 'Name', 'Indicator']
Dataframe2 = IndicatorRSK - columns ['Indicator', 'Code', 'Name']
想要更新Dataframe1 字段:通过与Dataframe2 映射其中IndicatorDF['Code'] == IndicatorRSK['Code'] & 更新IndicatorRSK['Indicator'] 值到IndicatorDF['Indicator'] 的指标
下面的脚本工作正常,但我想更新许多数据框。我们可以使用用户定义的函数来做到这一点吗?
mappingD = IndicatorDF[['Code', 'Indicator']].set_index('Code')
mappingD.update(IndicatorRSK.set_index('Code'))
IndicatorDF['Indicator'] = mappingD.values
我写了下面的函数,但不起作用,请帮忙。
IndicatorDF = pd.read_excel(r'C:\sunil_plus\dataset\imf\IMFBOP2017\4_Updation2017Apr\IMFBOP2017.xlsx', sheetname = 'Indicator')
IndicatorDF['Indicator'] = ''
IndicatorRSK = pd.read_csv(r'C:\sunil_plus\dataset\imf\IMFBOP2017\4_Updation2017Apr\Prod_IMFBOP2017\Prod_IMFBOP2017_Indicator.csv', dtype=object)
IndicatorRSK.rename(columns={'Key': 'Indicator'}, inplace=True)
def mapping(resultDF, indexCol, resultCol, mapDF, mapIndex):
mappingD = resultDF[[indexCol, resultCol]].set_index(indexCol)
mappingD.update(mapDF.set_index(mapIndex))
resultDF[resultCol] = mappingD.values
return
mapping('IndicatorDF', 'Code', 'Indicator', 'IndicatorRSK', 'Code') # passing data frame name and field name
IndicatorDF.to_csv(r'C:\sunil_plus\dataset\imf\IMFBOP2017\4_Updation2017Apr\Prod_IMFBOP2017\mapped.csv', index=False)
【问题讨论】:
标签: python python-3.x dictionary dataframe