【问题标题】:Match values between 2 data frame and update using user defined function匹配2个数据框之间的值并使用用户定义的函数进行更新
【发布时间】: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


    【解决方案1】:

    在传递对象时从数据帧中删除撇号。希望这会奏效 映射(IndicatorDF,'代码','指标',IndicatorRSK,'代码')

    【讨论】:

      猜你喜欢
      • 2018-05-29
      • 2021-04-07
      • 2018-10-01
      • 2020-11-30
      • 2020-06-20
      • 2021-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多