gpt4 book ai didi

python - 用 numpy 数组替换 pandas dataframe 变量值

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:07 27 4
gpt4 key购买 nike

我正在对来自 Pandas 数据框的变量进行转换,然后我想用我的新值替换该列。问题似乎是在转换之后,数组的长度与我的数据帧索引的长度不同。不过我不认为这是真的。

>>> df['variable'] = stats.boxcox(df.variable)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\eMachine\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\pandas\core\frame.py", line 2119, in __setitem__
self._set_item(key, value)
File "C:\Users\eMachine\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\pandas\core\frame.py", line 2165, in _set_item
value = self._sanitize_column(key, value)
File "C:\Users\eMachine\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\lib\site-packages\pandas\core\frame.py", line 2205, in _sanitize_column
raise AssertionError('Length of values does not match '
AssertionError: Length of values does not match length of index

当我检查长度时,这些长度似乎不一致。 len(array) 说它是 2,但是当我调用 stats.boxcox 时它说它是 50000。这是怎么回事?

>>> len(df)
50000
>>> len(stats.boxcox(df.variable))
2
>>> stats.boxcox(df.variable)
(0 -0.079496
1 -0.117982
2 -0.104637

...
49985 -0.041300
49986 0.651771
49987 -0.115660
49988 -0.118034
49998 -0.118014
49999 -0.034076
Name: feat9, Length: 50000, dtype: float64, 8.4721358117221772)
>>>

最佳答案

您可以在示例中看到 boxcox 的结果是一个元组。这与 the documentation 一致,这表明 boxcox 返回转换数据的元组和 lambda 值。请注意该页面上的示例:

xt, _ = stats.boxcox(x)

. . .再次显示 boxcox 返回一个 2 元组。

你应该做 df['variable'] = stats.boxcox(df.variable)[0]

关于python - 用 numpy 数组替换 pandas dataframe 变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22889425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com