熊猫重命名和重新索引:ValueError

时间:2020-02-27 09:25:44

标签: python pandas

def Transformation_To_UpdateNex(df):
   s = 'TERM-ID,NAME,QUALIFIER,FACET1_ID,FACET2_ID,FACET3_ID,FACET4_ID,GROUP1_ID,GROUP2_ID,GROUP3_ID,GROUP4_ID,IS_VALID,IS_SELLABLE,IS_PRIMARY,IS_BRANCHABLE,HAS_RULES,FOR_SUGGESTION,IS_SAVED,S_NEG,SCORE,GOOGLE_SV,CPC,SINGULARTEXT,SING_PLU_VORGABE'
   df_Import = pd.DataFrame(columns = s.split(','))
   d = {'TERMID':'TERM-ID', 'NAMECHANGE':'NAME', 'TYP':'QUALIFIER'}
   df_Import = df.rename(columns = d).reindex(columns=df_Import.columns)

   df_Import.to_csv("Update.csv", sep=";", index = False, encoding = "ISO-8859-1")


ValueError: cannot reindex from a duplicate axis

我正在尝试从已填充的数据框中获取值,并将这些值转移到我的新数据框中以保持相同的结构(在代码中首先描述的空值)。 任何想法如何解决价值错误?

1 个答案:

答案 0 :(得分:1)

那么错误:

ValueError:无法从重复的轴重新索引

意味着列名重复。

我认为rename存在问题,因为它会创建重复的列:

s = 'TERM-ID,NAME,QUALIFIER,FACET1_ID,NAMECHANGE,TYP'
df = pd.DataFrame(columns = s.split(','))
print (df)
Empty DataFrame
Columns: [TERM-ID, NAME, QUALIFIER, FACET1_ID, NAMECHANGE, TYP]
Index: []

在重命名后,这里重复了NAMEQUALIFIER列,因为原始列是NAMENAMECHANGE以及QUALIFIERTYP对:

d = {'TERMID':'TERM-ID', 'NAMECHANGE':'NAME', 'TYP':'QUALIFIER'}
df1 = df.rename(columns = d)
print (df1)
Empty DataFrame
Columns: [TERM-ID, NAME, QUALIFIER, FACET1_ID, NAME, QUALIFIER]
Index: []

可能的解决方案是测试,如果存在列和过滤器字典:

d = {'TERMID':'TERM-ID', 'NAMECHANGE':'NAME', 'TYP':'QUALIFIER'}

d1 = {k: v for k, v in d.items() if v not in df.columns}
print (d1)
{}

df1 = df.rename(columns = d1)
print (df1)
Empty DataFrame
Columns: [TERM-ID, NAME, QUALIFIER, FACET1_ID, NAMECHANGE, TYP]
Index: []
相关问题