处理 ValueError 的便捷方法:无法从重复轴重新索引

dia*_*dia 5 python indexing datetime concat pandas

我可以搜索显示此错误消息“原因”的建议,但无法搜索解决方法 -

每次尝试通过连接 2 个现有列中的字符串值向 Pandas 数据框添加新列时,我都会遇到此问题。

例如:

wind['timestamp'] = wind['DATE (MM/DD/YYYY)'] + ' ' + temp['stamp']
Run Code Online (Sandbox Code Playgroud)

如果第一个项目和第二个与 ' ' 合并的每个项目都是单独的数据帧/系列,则它有效。

这些尝试是将日期和时间合并到同一列中,以便 Pandas 库将它们识别为日期时间戳。

我不确定我是否错误地使用了该命令,或者是否是 Pandas 库功能在内部受到限制,因为它不断返回duplicate axis错误消息。我知道后者不太可能哈哈哈......

我能听到一些快速简便的解决方案吗?

我的意思是,我认为求和/减法以及数据框中列值之间的所有这些操作都非常简单。让它在桌子上可见应该不会太难吧?

jpp*_*jpp 13

系列之间的操作需要非重复索引,否则 Pandas 不知道如何在计算中对齐值。目前您的数据并非如此。

如果您确定您的系列按 position对齐,则可以调用reset_index每个数据框:

wind = pd.DataFrame({'DATE (MM/DD/YYYY)': ['2018-01-01', '2018-02-01', '2018-03-01']})
temp = pd.DataFrame({'stamp': ['1', '2', '3']}, index=[0, 1, 1])

# ATTEMPT 1: FAIL
wind['timestamp'] = wind['DATE (MM/DD/YYYY)'] + ' ' + temp['stamp']
# ValueError: cannot reindex from a duplicate axis

# ATTEMPT 2: SUCCESS
wind = wind.reset_index(drop=True)
temp = temp.reset_index(drop=True)
wind['timestamp'] = wind['DATE (MM/DD/YYYY)'] + ' ' + temp['stamp']

print(wind)

  DATE (MM/DD/YYYY)     timestamp
0        2018-01-01  2018-01-01 1
1        2018-02-01  2018-02-01 2
2        2018-03-01  2018-03-01 3
Run Code Online (Sandbox Code Playgroud)