首页 > 解决方案 > 多列映射

问题描述

title_query = """SELECT ean, productTitle FROM `xxlhoreca-bi.PriceSearch_BackUp.XXL_Price_All`"""
title_df = client.query(title_query).to_dataframe()
final_result['productTitle'] = final_result['ean'].map(title_df.set_index('ean')['productTitle'])

我有一个包含重复 EAN 的表(其他列略有不同),其中一些productTitle为空,我productTitle为那些没有标题且具有匹配 EAN 的表。

但是,现在我已经更新了数据并且我有多个 EAN + 商店。我想匹配 EAN+shop,然后添加缺少的标题。

就像是:

      ean | productTitle | shop 
----------+--------------+-------
      123 |  Table       |   FR
      123 |              |   FR
      123 |  Tisch       |   DE
      123 |              |   DE

我希望输出如下:

      ean | productTitle | shop 
----------+--------------+-------
      123 |  Table       |   FR
      123 |  Table       |   FR
      123 |  Tisch       |   DE
      123 |  Table       |   DE

我试过像:

title_query = """SELECT ean, shop, productTitle FROM `xxlhoreca-bi.PriceSearch_BackUp.XXL_Price_All`"""
title_df = client.query(title_query).to_dataframe()
final_result['productTitle'] = final_result['ean'].map(title_df.set_index('ean','shop')['productTitle'])

但得到一个错误:

pandas.core.indexes.base.InvalidIndexError: Reindexing only valid with uniquely valued Index objects

任何帮助将不胜感激

标签: pythonsqlpandasindexingmapping

解决方案


你试过这个

   title_df["ean"=="123"]["productTitle"] = "Table"

推荐阅读