gpt4 book ai didi

python - 使用和不使用索引初始化 pandas 数据帧,列会产生不同的结果

转载 作者:行者123 更新时间:2023-11-28 22:03:18 25 4
gpt4 key购买 nike

如果我使用以下方法构造一个 pandas.DataFrame,我会得到一个(我认为)奇怪的输出:

import pandas, numpy

df = pandas.DataFrame(
numpy.random.rand(100,2), index = numpy.arange(100), columns = ['s1','s2'])
smoothed = pandas.DataFrame(
pandas.ewma(df, span = 21), index = df.index, columns = ['smooth1','smooth2'])

当我查看平滑值时,我得到:

>>> smoothed.tail()
smooth1 smooth2
95 NaN NaN
96 NaN NaN
97 NaN NaN
98 NaN NaN
99 NaN NaN

这似乎是以下碎片调用的集合,它们会产生不同的结果:

smoothed2 = pandas.DataFrame(pandas.ewma(df, span = 21))
smoothed2.index = df.index
smoothed2.columns = ['smooth1','smooth2']

再次使用 DataFrame.tail() 调用我得到:

>>> smoothed2.tail()
smooth1 smooth2
95 0.496021 0.501153
96 0.506118 0.507541
97 0.516655 0.544621
98 0.520212 0.543751
99 0.518170 0.572429

谁能解释为什么这些 DataFrame 构造方法应该不同?

最佳答案

ewma(df, span=21) 的结果已经是一个 DataFrame,因此当您将它与列列表一起传递给 DataFrame 构造函数时,它会“选择”出那些列你通过了。在这种特殊情况下,很难打破标签和数据之间的联系。如果你这样做了:

In [23]: smoothed = DataFrame(ewma(df, span = 21).values, index=df.index, columns = ['smooth1','smooth2'])
In [24]: smoothed.head()
Out[24]:
smooth1 smooth2
0 0.218350 0.877693
1 0.400214 0.813499
2 0.308564 0.739426
3 0.433341 0.641891
4 0.525260 0.620541

没问题。当然

smoothed = ewma(df, span=21)
smoothed.columns = ['smooth1', 'smooth2']

也很好

关于python - 使用和不使用索引初始化 pandas 数据帧,列会产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9421412/

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