Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用列表将用户定义的函数更改为系列_Python_Pandas - Fatal编程技术网

Python 如何使用列表将用户定义的函数更改为系列

Python 如何使用列表将用户定义的函数更改为系列,python,pandas,Python,Pandas,我看到了一篇关于创造循环总和的帖子 我修改了它,添加了一个衰减“因子” 为了做到这一点,我想我需要修改函数,使用熊猫系列而不是列表。有没有一种简单的方法可以做到这一点?在这种情况下,您可以将序列转换为列表,如下所示: def rec(n, factor): if (type(n) != list): n = list(n) # <---- here it is if len(n) < 2: return n n[1] = factor*n[0] + n[1]

我看到了一篇关于创造循环总和的帖子 我修改了它,添加了一个衰减“因子”


为了做到这一点,我想我需要修改函数,使用熊猫系列而不是列表。有没有一种简单的方法可以做到这一点?

在这种情况下,您可以将序列转换为列表,如下所示:

def rec(n, factor):
    if (type(n) != list): n = list(n)  # <---- here it is
    if len(n) < 2: return n
    n[1] = factor*n[0] + n[1]
    return [n[0]] + rec(n[1:], factor)

print(rec([1,2,3,4], 0.5))
#[1, 2.5, 4.25, 6.125]


import pandas as pd

df_dic = {'ID': [1,1,1,1,2,2,2],
     'channel': [1,2,3,4,3,2,4]}
df = pd.DataFrame.from_dict(df_dic)

output = df.groupby(['ID'])['channel'].transform(rec, 0.5)


Out[1]:
    0    1.000
    1    2.500
    2    4.250
    3    6.125
    4    3.000
    5    3.500
    6    5.750
def rec(n,系数):

如果(type(n)!=list):n=list(n)#在这种情况下,您可以将序列转换为列表,如下所示:

def rec(n, factor):
    if (type(n) != list): n = list(n)  # <---- here it is
    if len(n) < 2: return n
    n[1] = factor*n[0] + n[1]
    return [n[0]] + rec(n[1:], factor)

print(rec([1,2,3,4], 0.5))
#[1, 2.5, 4.25, 6.125]


import pandas as pd

df_dic = {'ID': [1,1,1,1,2,2,2],
     'channel': [1,2,3,4,3,2,4]}
df = pd.DataFrame.from_dict(df_dic)

output = df.groupby(['ID'])['channel'].transform(rec, 0.5)


Out[1]:
    0    1.000
    1    2.500
    2    4.250
    3    6.125
    4    3.000
    5    3.500
    6    5.750
def rec(n,系数):
if(type(n)!=list):n=list(n)#
data.groupby('ID')['channel'].ewm(alpha=0.5).mean()
data.groupby('ID')['channel'].ewm(alpha=0.5).mean()
def rec(n, factor):
    if (type(n) != list): n = list(n)  # <---- here it is
    if len(n) < 2: return n
    n[1] = factor*n[0] + n[1]
    return [n[0]] + rec(n[1:], factor)

print(rec([1,2,3,4], 0.5))
#[1, 2.5, 4.25, 6.125]


import pandas as pd

df_dic = {'ID': [1,1,1,1,2,2,2],
     'channel': [1,2,3,4,3,2,4]}
df = pd.DataFrame.from_dict(df_dic)

output = df.groupby(['ID'])['channel'].transform(rec, 0.5)


Out[1]:
    0    1.000
    1    2.500
    2    4.250
    3    6.125
    4    3.000
    5    3.500
    6    5.750