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

时间:2018-08-21 17:27:01

标签: python pandas datetime indexing concat

我能够搜索显示此错误消息“原因”的建议,但无法解决该问题-

每次我尝试通过在2个现有列中串联字符串值来向pandas数据帧添加新列时遇到此问题。

例如:

wind['timestamp'] = wind['DATE (MM/DD/YYYY)'] + ' ' + temp['stamp']

如果第一个项目和第二个项目与''合并为单独的数据帧/系列,则可以使用

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

我不确定我是错误使用命令还是熊猫库功能在内部受到限制,因为它会不断返回duplicate axis错误消息。我知道后者极不可能哈哈哈...

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

我的意思是,我认为数据帧中列值之间的加/减以及所有这些运算将非常容易。在表上也可以看到它应该不难吗?

1 个答案:

答案 0 :(得分:1)

系列之间的操作需要无重复的索引,否则Pandas不知道如何在计算中对齐值。当前您的数据不是这种情况。

如果确定序列按位置对齐 ,则可以在每个数据帧上调用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