首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能在Pandas上创建两个具有不同移动平均窗口的列?

在Pandas中,移动平均是一种常见的数据处理操作,它可以用于平滑时间序列数据或者计算滚动统计指标。然而,Pandas的移动平均函数只能应用于单个列,而不能直接创建具有不同移动平均窗口的多个列。这是因为Pandas的设计初衷是提供高效的数据处理和分析功能,而不是为每个特定的数据处理需求提供专门的函数。

如果你想要在Pandas上创建具有不同移动平均窗口的多个列,可以通过编写自定义函数来实现。以下是一个示例代码,展示了如何使用Pandas和NumPy来计算具有不同移动平均窗口的多个列:

代码语言:txt
复制
import pandas as pd
import numpy as np

# 创建一个示例DataFrame
data = {'A': [1, 2, 3, 4, 5],
        'B': [6, 7, 8, 9, 10]}
df = pd.DataFrame(data)

# 定义移动平均函数
def moving_average(data, window):
    weights = np.repeat(1.0, window) / window
    ma = np.convolve(data, weights, 'valid')
    return np.concatenate((np.full(window-1, np.nan), ma))

# 创建具有不同移动平均窗口的多个列
df['A_ma_2'] = moving_average(df['A'], 2)
df['A_ma_3'] = moving_average(df['A'], 3)
df['B_ma_2'] = moving_average(df['B'], 2)
df['B_ma_4'] = moving_average(df['B'], 4)

print(df)

输出结果如下:

代码语言:txt
复制
   A   B  A_ma_2  A_ma_3  B_ma_2  B_ma_4
0  1   6     NaN     NaN     NaN     NaN
1  2   7     1.5     NaN     6.5     NaN
2  3   8     2.5     2.0     7.5     NaN
3  4   9     3.5     3.0     8.5    7.50
4  5  10     4.5     4.0     9.5    8.25

在这个示例中,我们定义了一个moving_average函数来计算移动平均。然后,我们使用这个函数分别对AB列应用了不同的移动平均窗口,并将结果存储在新创建的列中。

需要注意的是,这种方法可能会导致计算效率较低,特别是当数据量较大时。如果需要频繁地进行不同窗口的移动平均计算,建议使用其他专门针对此类需求的库或工具,如NumPy、SciPy或者自定义的高性能函数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用Python也能进军金融领域?这有一份股票交易策略开发指南

您将开发的策略很简单:您可以创建两个独立的简单移动平均线(SMA),它们具有不同的回溯期,假设是40天和100天。...在您的空signals DataFrame中创建一个名为signal的列,并将其行全都初始化为0.0。 在准备工作之后,是时候在各自的长短时间窗口中创建一组短和长的简单移动平均线了。...接下来,不要忘记链接mean()函数,以便计算滚动的平均值。 在计算了短期和长期窗口的平均值后,当短移动平均线跨过长移动平均线时,您应该创建一个信号,但只能在该周期大于最短移动平均窗口期间创建信号。...请注意,您添加[short_window:]用以满足条件“只能在大于最短移动平均窗口期间”。当条件为真时,初始化为0.0的signal列将被1.0覆盖。一个“信号”被创建了!...接下来,你在DataFrame中创建了一个名为AAPL的新列。在信号为1的时候,短移动平均线跨越长移动平均线(大于最短移动平均窗口),你将购买100股。

3K40

Pandas库

它擅长处理一维带标签的数据,并且具有高效的索引和向量化操作能力。 在单列数据的操作上,Series通常比DataFrame更高效,因为它是为单列数据设计的。...移动平均( Rolling Average) : 移动平均是一种常用的平滑时间序列数据的方法,通过计算滑动窗口内的平均值来减少噪声。...Pandas中的rolling方法可以轻松实现移动平均,并且可以通过设置不同的参数来调整窗口大小和权重。...指数加权移动平均(Exponential Weighted Moving Average, EWMA) : 指数加权移动平均是一种比普通移动平均更为灵活的平滑方法,它赋予最近的数据更高的权重。...Pandas提供了ewm方法来计算指数加权移动平均。 时间窗口操作(Time Window Operations) : 时间窗口操作包括创建时间对象、时间索引对象以及执行时间算术运算等。

8410
  • Pandas 学习手册中文第二版:11~15

    然后,Pandas 在结果中为两个对象中的每一列创建一列,然后复制值。...在堆叠格式中,数据通常不规范化,并且在许多列中具有重复的值,或者在逻辑上应存在于其他表中的值(违反了整洁数据的另一个概念)。 取得以下数据,这些数据代表来自加速度计上的数据流。...从技术上讲,熔化是将DataFrame对象整形为 格式的过程,其中通过不旋转variable列中的列标签来创建两个或更多列,分别称为variable和value ,然后将数据从这些列移到value列中的适当位置...然后,来自.rolling()的结果值可以具有许多调用的不同方法之一,这些方法可以在每个窗口上执行计算。...为了演示,在本章前面创建的随机游走的第一分钟,我们将使用窗口 5 计算滚动平均值。

    3.4K20

    Python在Finance上的应用4 :处理股票数据进阶

    欢迎来到Python for Finance教程系列的第4部分。 在本教程中,我们将基于Adj Close列创建烛形/ OHLC图,这将允许我介绍重新采样和其他一些数据可视化概念。...因此,我们将创建自己的OHLC数据,这也将使能够显示来自Pandas的另一个数据转换: df_ohlc = df['Adj Close'].resample('10D').ohlc() 我们在这里所做的是创建一个基于...df ['Adj Close']列的新数据框,重新封装10天的窗口,并且重采样是一个ohlc(开高低关闭)。...我们也可以用.mean()或.sum()做10天的平均值或10天的总和。请记住,这10天的平均值是10天的平均值,而不是移动平均值。...由于仅仅只要在Matplotlib中绘制列,所以实际上不希望日期成为索引,可以这样做: df_ohlc = df_ohlc.reset_index() 现在的日期只是一个普通的列。

    1.9K20

    用一行Python代码创建高级财务图表

    该图表看起来像一系列砖块,当价格移动指定的价格金额时会创建一个新砖块,并且每个块都与前一个砖块成 45 度角(向上或向下)。...据我所知,mplfinance 是唯一提供 Renko 图表的 Python 库,也是我们接下来要看到的,这就是为什么这个包在金融可视化方面具有强大优势的原因。...代码如下所示: mf.plot(amzn, type = 'pnf') 点数图 添加更多信息 mplfinance 包不仅限于生成不同类型的图表,还使我们能够通过添加简单移动平均线 (SMA) 和交易量等附加指标使这些图表更具洞察力...对于那些不知道这两者的人来说,成交量是交易者在特定时间范围内买卖的股票数量,而简单移动平均线 (SMA) 只不过是特定时间段的平均价格。它是一种技术指标,广泛用于创建交易策略。...下一个方法是使用mav我们可以添加任意数量的具有不同回顾期的 SMA的参数。

    1.4K20

    14个pandas神操作,手把手教你写代码

    01 Pandas是什么 很多初学者可能有这样一个疑问:“我想学的是Python数据分析,为什么经常会被引导到Pandas上去?”虽然这两个东西都是以P开头的,但它们并不是同一个层面的东西。...Pandas的命名跟熊猫无关,而是来自计量经济学中的术语“面板数据”(Panel data)。面板数据是一种数据集的结构类型,具有横截面和时间序列两个维度。...; 数据的转置,如行转列、列转行变更处理; 连接数据库,直接用SQL查询数据并进行处理; 对时序数据进行分组采样,如按季、按月、按工作小时,也可以自定义周期,如工作日; 窗口计算,移动窗口统计、日期移动等...: df.groupby('team').sum() # 按团队分组对应列相加 df.groupby('team').mean() # 按团队分组对应列求平均 # 不同列不同的计算方法 df.groupby...图5 按team分组后求平均数 不同计算方法聚合执行后的效果如图6所示。 ?

    3.4K20

    GPT4做数据分析时间序列预测之四相当棒2023.5.25

    1、把6个时间序列预测的方法的python代码合并。 程序设置为数据读取、数据预测、数据保存3个步骤。 不同的数据预测方法保存在同一个excel的不同列。...我们在一个循环中进行预测,每次迭代都会对不同的时间窗口进行预测。我们将使用pandas的ExcelWriter对象来将所有的预测结果保存到同一个Excel文件中。...每次迭代都会对一个不同的时间窗口进行预测,并将预 3、 根据您的需求,以下是将这三种预测方法(SARIMAX、Prophet、ARIMA)合并到一个程序中,并将预测结果保存到Excel文件的不同列中的代码...另一种方法) 根据您的需求,我将这些方法的代码合并,并将预测结果保存到Excel文件的不同列中。...这两个函数不能同时使用,应该只选用一个。plt.show() 会显示图像窗口,如果同时使用 plt.savefig() 保存图像,该图像窗口会被保存,导致保存的图像为空白。

    38920

    用一行Python代码创建高级财务图表

    该图表看起来像一系列砖块,当价格移动指定的价格金额时会创建一个新砖块,并且每个块都与前一个砖块成 45 度角(向上或向下)。...据我所知,mplfinance 是唯一提供 Renko 图表的 Python 库,也是我们接下来要看到的,这就是为什么这个包在金融可视化方面具有强大优势的原因。...代码如下所示: mf.plot(amzn, type = 'pnf') 点数图添加更多信息 mplfinance 包不仅限于生成不同类型的图表,还使我们能够通过添加简单移动平均线 (SMA) 和交易量等附加指标使这些图表更具洞察力...对于那些不知道这两者的人来说,成交量是交易者在特定时间范围内买卖的股票数量,而简单移动平均线 (SMA) 只不过是特定时间段的平均价格。它是一种技术指标,广泛用于创建交易策略。...下一个方法是使用mav我们可以添加任意数量的具有不同回顾期的 SMA的参数。

    1.3K30

    Pandas处理时间序列数据的20个关键知识点

    举几个例子: 一段时间内的股票价格 每天,每周,每月的销售额 流程中的周期性度量 一段时间内的电力或天然气消耗率 在这篇文章中,我将列出20个要点,帮助你全面理解如何用Pandas处理时间序列数据。...将数据格式转换为时间序列数据 to_datetime函数可以将具有适当列的数据名称转换为时间序列。...创建一个具有指定时区的时间序列 我们还可以使用tz关键字参数创建带有时区的时间序列对象。...Shift vs tshift 移动:移动数据 tshift:移动时间索引 让我们创建一个带有时间序列索引的dataframe,并绘制它以查看shift和tshift之间的区别。...滚动意味着创建一个具有指定大小的滚动窗口,并对该窗口中的数据执行计算,当然,该窗口将滚动数据。下图解释了滚动的概念。 值得注意的是,计算开始时整个窗口都在数据中。

    2.7K30

    有比Pandas 更好的替代吗?对比Vaex, Dask, PySpark, Modin 和Julia

    我将在具有16GB RAM的4核笔记本电脑上进行这些操作。...列分组并计算总和和平均值 sorting—对合并数据集进行3次排序(如果库允许) ?...甚至官方的指导都说要运行并行计算,然后将计算出的结果(以及更小的结果)传递给Pandas。 即使我尝试计算read_csv结果,Dask在我的测试数据集上也要慢30%左右。...这就是为什么任何代码的第一次运行都比后续运行花费更长的时间的原因。 在下面的图表中,您可以看到第一次运行的时间明显长于其余六次测量的平均值。...我还尝试过在单个内核(julia)和4个处理器内核(julia-4)上运行Julia。 ? 通过将环境变量JULIA_NUM_THREADS设置为要使用的内核数,可以运行具有更多内核的julia。

    4.8K10

    智能分析:ChatGPT+Excel+Python超强组合玩转数据分析

    图1所示工作表中A-C列是不同班学生的考试成绩,要求计算各班学生考试成绩的平均分。这是一个分组统计问题。...运行脚本,在IDLE Shell窗口输出各班的平均成绩。...处理完后,最终序号添加在第G列,变量名为“排名”。给代码添加注释。 为什么会有这么明显的差异呢? 笔者考虑主要有两点原因。...大量实战标明,ChatGPT生成的pandas代码成功率很高,大多数情况下代码不需要修改就可以解决问题。而另外两个包用ChatGPT生成的代码运行时常常出错。...Pandas包处理数据的速度很快,代码简洁,支持大型数据,但是它不支持Excel对象模型,不能在pandas中直接读取Excel工作表指定单元格区域中的数据或者将数据写入指定单元格区域。

    1K10

    使用 Python 进行财务数据分析实战

    另外,使用 np.log() 函数计算了每日的对数收益,并将结果数据框打印出来。这段代码提供了苹果股票每日收益的两个不同角度。...hist() 方法,创建一个具有 50 个间隔的直方图。...首先设置了两个变量,分别代表短期和长期移动平均线的长度。 接下来,初始化一个DataFrame来包含信号,其中一列表示信号,另一列表示位置。...代码会计算并将短期和长期移动平均线加入到信号DataFrame的各自列中。 最后,通过比较这两个移动平均线来生成交易信号,如果短期大于长期,就将信号列设为1.0。...在子图中,使用红色绘制苹果公司股票的收盘价,并加入两条移动平均线。在买入信号处添加符号^,在卖出信号处添加符号v,这两个符号均位于短移动平均线的顶部。最终的图表将显示在窗口中。

    95010

    Python在Finance上的应用3:处理股票数据基础

    简单移动平均(英语:simple moving average,SMA)是某变数之前n个数值的未作加权算术平均。例如,收市价的10日简单移动平均指之前10日收市价的平均数。...Pandas 模块实现上述功能十分简单,例如100日均 df['100ma'] = df['Adj Close'].rolling(window=100).mean() 这里df ['100ma']列等同于应用移动平均方法创建的...df ['Adj Close']列,窗口时间为100,并且进行求平均值的操作。...在100ma列下,只看到NaN。我们选择了100个移动平均线,理论上需要100个之前的数据点进行计算,但是在这里却没有任何数据在前100行。 NaN的意思是“Not a Number”。...这里我们想要创建两个子图,而这两个子图都将像6x1网格一样,有6行1列。第一个子图从该网格上的(0,0)开始,跨越5行,并跨越1列。下一个轴也在6x1网格上,但是从(5,0)开始,跨越1行和1列。

    74310

    特征工程:Kaggle刷榜必备技巧(附代码)!!!

    这是一个相当好玩的玩具数据集,因为具有基于时间的列以及分类列和数字列。 如果我们要在这些数据上创建特征,我们需要使用Pandas进行大量的合并和聚合。 自动特征工程让我们很容易。...在我们的session_df表中,我们有一个名为device的列,它包含三个级别——桌面、移动设备或平板电脑。我们可以使用以下方法从这样的列中获取两列: ?...它与二进制编码器不同,因为在二进制编码中,两个或多个俱乐部参数可能是1,而在哈希散列中只有一个值是1。 我们可以像这样使用哈希散列: ? ? 一定会有冲突(两个俱乐部有相同的编码。...在这种情况下,我们可以使用不同分类变量的平均目标变量作为特征。 在泰坦尼克中,我们可以在乘客舱变量上创建目标编码特征。 在使用目标编码时,我们必须小心,因为它可能会导致我们的模型过度使用。...但是在特征工程方面肯定没有限制,只有你的想象力限制了你。 在这一点上,我们总是在心里考虑特征工程的同时考虑我将要使用的模型。在随机森林中工作的特征可能在逻辑回归中无法很好的工作。

    5.1K62

    Pandas学习笔记之时间序列总结

    关键词:pandas NumPy 时间序列 Pandas 的发展过程具有很强的金融领域背景,因此你可以预料的是,它一定包括一整套工具用于处理日期、时间和时间索引数据。...重新取样、移动和窗口 使用日期和时间作为索引来直观的组织和访问数据的能力,是 Pandas 时间序列工具的重要功能。...因为 Pandas 是在金融背景基础上发展而来的,因此它具有一些特别的金融数据相关工具。...Pandas 有两个很接近的方法来实现时间的移动:shift()和tshift。简单来说,shift()移动的是数据,而tshift()移动的是时间索引。两个方法使用的移动参数都是当前频率的倍数。...上图结果中的锯齿图案产生的原因是窗口边缘的硬切割造成的。我们可以使用不同的窗口类型来获得更加平滑的结果,例如高斯窗口。

    4.2K42

    超级攻略!PandasNumPyMatrix用于金融数据准备

    pandas pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。...对于dataframe而言,指定要计算滚动窗口的列。值为列名。 axis: int、字符串,默认为0,即对列进行计算 closed:定义区间的开闭,支持int类型的window。...alpha float, optional 直接地指定平滑系数 , min_periods int, default 0 窗口中具有值的最小观察数(否则结果为NA)。...adjust bool, default True 调整,在开始期间除以递减的调整因子,以解决相对权重的不平衡问题(将EWMA视为移动平均值)。...例如,该系列的EW移动平均值 将会 当adjust=False为时,将以递归方式计算指数加权函数: ignore_na bool, default False 计算权重时忽略缺失值;指定

    7.3K30
    领券