Pandas - 在数据框中附加字符串:ValueError:无法从重复的轴重新索引

Posted

技术标签:

【中文标题】Pandas - 在数据框中附加字符串:ValueError:无法从重复的轴重新索引【英文标题】:Pandas - append strings in data frame: ValueError: cannot reindex from a duplicate axis 【发布时间】:2016-12-22 23:07:26 【问题描述】:

我有一个与此类似的 data.frame(除了更长且颜色名称更多):

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'

在我较长的 data.frame 中,我通常会收到错误:

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

有人可以帮忙吗? 提前非常感谢!

【问题讨论】:

【参考方案1】:

index 中的重复项存在问题。您可以将索引的所有值替换为 reset_indexRegular Index (0,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)

【讨论】:

如果我的回答有帮助,别忘了accept。谢谢。

以上是关于Pandas - 在数据框中附加字符串:ValueError:无法从重复的轴重新索引的主要内容,如果未能解决你的问题,请参考以下文章

无法在 python pandas 数据框中附加嵌套的 JSON 值

在pandas数据框中附加问题的时间序列

在 Pandas 数据框中提取嵌入为字符串的嵌套 JSON

使用 pandas 连接两个数据框中的不同列(并附加相似的列)

python将多个excel中的所有工作表附加到pandas数据框中的有效方法

将 Pymongo 数据从列表附加到 pandas 数据框