ValueError: index 必须是单调递增或递减,同时包含index,column,ffill

Posted

技术标签:

【中文标题】ValueError: index 必须是单调递增或递减,同时包含index,column,ffill【英文标题】:ValueError: index must be monotonic increasing or decreasing, including index,column, ffill at the same time 【发布时间】:2017-12-05 17:41:21 【问题描述】:

我使用的 pandas 版本是 '0.20.1', python 3

虽然有两个问题: question1 , question2 被问到同样的错误,而我发现这两个问题跟我的情况不一样。

数据来自《用于数据分析的 Python》一书,第 123-124 页。 当我运行以下代码时,

frame = DataFrame(np.arange(9).reshape((3, 3)), index=['a', 'c', 'd'],
                  columns=['Ohio', 'Texas', 'California'])
states = ['Texas', 'Utah', 'California']
frame.reindex(index=['a', 'b', 'c', 'd'], method='ffill',columns=states)

报错

ValueError: index must be monotonic increasing or decreasing

虽然我尝试了以下两个表达式,但它们运行成功:

frame.reindex(index=['a', 'b', 'c', 'd'], columns=states)

frame.reindex(index=['a', 'b', 'c', 'd'], method='ffill')

***********************更新***************

我试过这段代码,

frame3=frame.reindex(index=['a', 'b', 'c', 'd'], method='ffill').reindex(columns=states)

然后它返回与书相同的结果。

Out[92]:
Texas Utah California
a 1 NaN 2
b 1 NaN 2
c 4 NaN 5
d 7 NaN 8

【问题讨论】:

你用的是什么版本的熊猫?您的确切代码适用于 0.18.1 熊猫版本是'0.20.1',python 3 @DeepSpace,你的意思是“frame3=frame.reindex(index=['a', 'b', 'c', 'd'], method='ffill').reindex( columns=states)" 适合你吗? 是的,确实如此…… 谢谢,也许以前的pandas版本可以像书一样运行代码。如果有人使用以前版本的 pandas,请告诉我,谢谢。 【参考方案1】:

因为列也被重新索引,不是单调递增或递减。

【讨论】:

考虑添加更多细节/上下文来帮助 OP 如果把代码改成frame.reindex(index=[1,2,3,4],method='ffill', columns=[1,2,3]) 它也不起作用 - pandas 0.25.1 和 Python 3.7.3

以上是关于ValueError: index 必须是单调递增或递减,同时包含index,column,ffill的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:索引必须是单调的

数据分析,使用plt.hist(runtime_data, num_bin_list)时出现ValueError: `bins` must increase monotonically, when a

动态规划之最大递增子序列

nyoj 单调递增子序列

贪心算法:单调递增的数字

贪心算法:单调递增的数字