如何为 pandas 数据帧的每一列应用具有不同时间常数的一阶滤波器?
How to apply a first order filter with a different time constant for each column of a pandas dataframe?
大家好!我有一个 pandas 数据框,其中每一列代表一个噪声信号,我想在每一列中应用一阶滤波器(增益 = 1,时间常数 =“x”秒),但时间常数不同对于每一列。例如:
Column_A --> Time constant = 5 secs
Column_B --> Time constant = 15 secs
Column_C --> Time constant = 60 secs
Column_D --> Time constant = 200 secs
有什么想法吗?
谢谢!
您可以将 apply
与作为元组传递的 args
一起使用,如下所示:
def your_filter_func(x, gain, time_constant):
return some_filter(x, gain, time_constant)
df = df.apply(your_filter_func, args=(gain, time_constant), axis=0)
这将 your_filter_func
应用于每一列(即轴 =0 的部分)。
如果您还想对每个列应用单独的 gain
和 time_constant
,您可以通过使用列的索引并相应地进行调整来实现:
def your_filter_func2(column, gains, time_constants):
return some_filter(x, gains[column.index], time_constants[column.index])
df = df.apply(your_filter_func2, args=(gains, time_constants), axis=0)
并且只需确保 gains
和 time_constants
是可迭代的(例如列表或 numpy 数组),您可以在其中通过列的索引对其进行索引,以提取特定的该列的增益和 time_constant。
大家好!我有一个 pandas 数据框,其中每一列代表一个噪声信号,我想在每一列中应用一阶滤波器(增益 = 1,时间常数 =“x”秒),但时间常数不同对于每一列。例如:
Column_A --> Time constant = 5 secs
Column_B --> Time constant = 15 secs
Column_C --> Time constant = 60 secs
Column_D --> Time constant = 200 secs
有什么想法吗?
谢谢!
您可以将 apply
与作为元组传递的 args
一起使用,如下所示:
def your_filter_func(x, gain, time_constant):
return some_filter(x, gain, time_constant)
df = df.apply(your_filter_func, args=(gain, time_constant), axis=0)
这将 your_filter_func
应用于每一列(即轴 =0 的部分)。
如果您还想对每个列应用单独的 gain
和 time_constant
,您可以通过使用列的索引并相应地进行调整来实现:
def your_filter_func2(column, gains, time_constants):
return some_filter(x, gains[column.index], time_constants[column.index])
df = df.apply(your_filter_func2, args=(gains, time_constants), axis=0)
并且只需确保 gains
和 time_constants
是可迭代的(例如列表或 numpy 数组),您可以在其中通过列的索引对其进行索引,以提取特定的该列的增益和 time_constant。