2017-06-21 2 views
1

J'ai obtenu ValueError: Columns index has to be unique for fixed format lorsque j'ai essayé d'enregistrer une trame de données que j'ai formée en combinant plusieurs série de données temporelles. Ceci est l'échantillon de ce que je l'ai faitL'index des colonnes doit être unique pour l'erreur de format fixe dans les séries temporelles pandas

df1=pd.concat([d1,d2,d3,d4],axis=1] 
df2=pd.DataFrame(d5) 
df3=pd.concat([d6,d7,d8],axis=1] 

main_df=pd.concat([df1,df2,df3],axis=1) 
main_df=main_df.dropna() 
main_df.head() 

jusqu'à ici, il fonctionne très bien, mais quand j'ai essayé d'enregistrer ces données dans un fichier HDF5 son me donner cette erreur Columns index has to be unique for fixed format

fi=pd.read_hdf("data.h5") 
fi['df']=main_df #this line cause the error 
+0

Avez-vous besoin DUPL noms de colonnes d'icate? La solution la plus simple est de renommer les noms de colonne en double. – jezrael

+0

Oui J'ai quelques colonnes avec le même nom quelle est la meilleure façon de renommer toutes les colonnes dupliquées. J'ai un très grand ensemble de données> 30 colonnes – Eka

Répondre

1

Vous pouvez utiliser cumcount pour le comte duplicates, replace0 si nécessaire et l'ajouter aux noms de colonnes d'origine:

df = pd.DataFrame([[1,2,3,4]], columns = list('abbc')) 
print (df) 
    a b b c 
0 1 2 3 4 

s = df.columns.to_series() 
df.columns = s + s.groupby(s).cumcount().astype(str).replace({'0':''}) 
print (df) 
    a b b1 c 
0 1 2 3 4