2016-08-16 8 views
2

からインデックスを再作成することはできません私は(はるかに長いと途中でよりcolornamesを除く)これと同様の探しdata.frameを持っている:パンダ - データフレーム内の文字列を追加します。ValueErrorをする:重複軸

ff = pd.DataFrame({'OldCol':['darkbrown','lightbeige','lightbrown/beige','beige','brown','beige/cognac'], 'NewCol':['nan','nan','nan','nan','nan','nan']}) 

私が欲しいですこのように見てdata.frame:

ffnew = pd.DataFrame({'OldCol':['darkbrown','lightbeige','lightbrown/beige','beige','brown','beige/cognac'], 'NewCol':['brown','beige','beige/brown','sand','brown','sand/brown']}) 

は、私は次のことを試してみました:

私の長いデータで
ff.loc[ff['OldCol'].str.contains(r'brown|cognac',na=False) & ff['NewCol'].str.contains(r'nan'), 'NewCol'] = 'brown' 
ff.loc[ff['OldCol'].str.contains(r'brown|cognac',na=False) & ~ff['NewCol'].str.contains(r'nan|brown'), 'NewCol'] = ff['NewCol']+'/ brown' 

ff.loc[ff['OldCol'].str.contains(r'beige|sand',na=False) & ff['NewCol'].str.contains(r'nan'), 'NewCol'] = 'beige' 
ff.loc[ff['OldCol'].str.contains(r'beige|sand',na=False) & ~ff['NewCol'].str.contains(r'nan|beige'), 'NewCol'] = ff['NewCol'] +'/ beige' 

。フレーム私は通常エラーが発生します:

ValueError: cannot reindex from a duplicate axis

誰でも手助けできますか? ありがとうございました!

答えて

1

indexに重複に問題があります。インデックスのすべての値をreset_indexからRegular Index0,1,2..len(df)-1)に置き換えることができます。古い値は、パラメータdrop=Trueによって除去されています

ff.reset_index(drop=True, inplace=True) 

テスト:

ff = pd.DataFrame({'OldCol':['darkbrown','lightbeige','lightbrown/beige','beige','brown','beige/cognac'], 'NewCol':['nan','nan','nan','nan','nan','nan']}) 
ffnew = pd.DataFrame({'OldCol':['darkbrown','lightbeige','lightbrown/beige','beige','brown','beige/cognac'], 'NewCol':['brown','beige','beige/brown','sand','brown','sand/brown']}) 
ff.index = [0,0,2,3,4,5] 
#ValueError: cannot reindex from a duplicate axis 
ff.reset_index(drop=True, inplace=True) 
+0

本当にありがとうございました!!!!! – Laura

+0

私の答えが役に立ったら、[同意する](http://meta.stackexchange.com/a/5235/295067)を忘れないでください。ありがとう。 – jezrael

関連する問題