gpt4 book ai didi

python - Pandas 滚动删除了复杂的虚部......缺陷或特征?

转载 作者:行者123 更新时间:2023-12-05 05:43:53 28 4
gpt4 key购买 nike

Pandas 滚动似乎只返回复数值的实部...

我错过了什么吗?

a=np.array([[1+0j,2+0j,3+0j],[4j,5j,10+6j]])
pd.DataFrame(a.T).rolling(3).apply(lambda x: print(x) is None)

输出:

0   1
1 2
2 3
dtype: float64
0 0
1 0
2 10
dtype: float64
0 1
0 NaN NaN
1 NaN NaN
2 1 1

请注意,问题不在于应用。当在没有滚动的情况下使用 apply 时,整个复数值被传递给 lambda 函数:

a=np.array([[1+0j,2+0j,3+0j],[4j,5j,10+6j]])
pd.DataFrame(a.T).apply(lambda x: print(x) is None)

输出:

0   1+0j
1 2+0j
2 3+0j
Name: 0, dtype: complex128
0 0+4j
1 0+5j
2 10+6j
Name: 1, dtype: complex128
0 True
1 True
dtype: bool

** 注意:这不是是否使用滚动的问题 - 而是关于复杂值滚动的行为。


  • 更新:问题在 Pandas 1.5.1 上仍然存在

最佳答案

我刚刚更改了警告 ensure_float64 中提到的行,因为它检查值是否为 float64,如下所示:

values = values

然后更改数据类型,因为它会产生缓冲区错误,如下所示:

import pandas as pd
import numpy as np

a=np.array([[1+0j,2+0j,3+0j],[4j,5j,10+6j]])
pd.DataFrame(a.T).astype(np.complex64).rolling(3).apply(lambda x: print(x) is None)

结果:

0    1.0+0.0j
1 2.0+0.0j
2 3.0+0.0j
dtype: complex64
0 0.0+4.0j
1 0.0+5.0j
2 10.0+6.0j
dtype: complex64
0 1
0 NaN NaN
1 NaN NaN
2 1.0 1.0

滚动文件位置:

C:\Users\user\anaconda3\pkgs\pandas-1.2.4-py38hd77b12b_0\Lib\site-packages\pandas\core\window

要编辑的行:348。

关于python - Pandas 滚动删除了复杂的虚部......缺陷或特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71722512/

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