匹配2个数据帧之间的值,并使用用户定义的函数更新

2024-10-01 00:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

Dataframe1 = IndicatorDF - columns ['Code', 'Name', 'Indicator']

Dataframe2 = IndicatorRSK - columns ['Indicator', 'Code', 'Name']

要通过映射Dataframe2whereIndicatorDF['Code'] == IndicatorRSK['Code']来更新Dataframe1字段:指示符(&;将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)

Tags: columnscsvindexcodeplusdatasetindicatorset
1条回答
网友
1楼 · 发布于 2024-10-01 00:21:24

在传递对象时,从数据帧中删除撇号。希望这能奏效 映射(指示符df,‘代码’、‘指示符’、‘指示符rsk’、‘代码’)

相关问题 更多 >