如何解决错误:InvalidIndexError:在将数据帧映射到另一个数据帧时,仅对具有唯一值的索引对象重新索引有效

2024-09-27 02:20:25 发布

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

我有一个Pandas DataFrame。我正在尝试将ProductID从一个dataframe映射到另一个dataframe

以下是我的尝试:

Product_id_mapper = dict(df1[['ProductID', 'Cost']].drop_duplicates().values)

df2["Actual_cost"] = df2['ProductID'].map(Product_id_mapper)

不幸的是,我得到了以下错误:

InvalidIndexError: Reindexing only valid with uniquely valued Index objects

我想知道为什么即使删除了重复项,我也会不断出现这个错误


Tags: iddataframepandas错误productdictdropdf1
1条回答
网友
1楼 · 发布于 2024-09-27 02:20:25

如果我理解正确,您希望基于Key两个数据帧合并。那么我的建议是:

假设a.csv

carrier,type,count
DTH,a,123
DTH,b,3123
DTH,c,41341
DTH,d,13411
BLUEDART,a,12123
BLUEDART,b,31231
BLUEDART,c,411
BLUEDART,d,11

而{}是:

carrier,year
DTH,1997
BLUEDART,2005

Python代码:

import pandas as pd

a_df = pd.read_csv(r"a.csv")
b_df = pd.read_csv(r"b.csv")

merged_df = pd.merge(a_df, b_df, on=['carrier'])
print(merged_df)

以及输出:

    carrier type  count  year
0       DTH    a    123  1997
1       DTH    b   3123  1997
2       DTH    c  41341  1997
3       DTH    d  13411  1997
4  BLUEDART    a  12123  2005
5  BLUEDART    b  31231  2005
6  BLUEDART    c    411  2005
7  BLUEDART    d     11  2005

如果在CSV上以不同方式调用Key列名,请使用:

out = (df1.merge(df2, left_on='key1', right_on='key2')
          .reindex(columns=[...]))

相关问题 更多 >

    热门问题