在Python中向函数添加stats代码

在Python中向函数添加stats代码,python,pandas,Python,Pandas,我对Python比较陌生,正在尝试学习如何编写函数。对的回答强调了如何从数据帧获取某些统计信息,我希望在函数中使用它 这是我的尝试,但它不适用于属性错误:“SeriesGroupBy”对象没有属性“test\u for\u B”: def test_multi_match(df_in,test_val): test_for_B = df_in == test_val contigious_groups = ((df_in == test_val) & (df_in !=

我对Python比较陌生,正在尝试学习如何编写函数。对的回答强调了如何从数据帧获取某些统计信息,我希望在函数中使用它

这是我的尝试,但它不适用于
属性错误:“SeriesGroupBy”对象没有属性“test\u for\u B”

 def test_multi_match(df_in,test_val):
    test_for_B = df_in == test_val
    contigious_groups = ((df_in == test_val) & (df_in != df_in.shift())).cumsum() + 1
    counts = df_in.groupby(contigious_groups).test_for_B.sum()
    counts.value_counts() / contigious_groups.max()
有人能帮我把这段代码放到一个可以在其他数据帧上重复使用的函数中吗?谢谢

编辑:删除大属性错误,现在已回答此问题

给你:

def repeat_stats(series, var):
    isvar = series == var
    wasntvar = series != series.shift()
    cont_grps = (isvar & wasntvar).cumsum()
    counts = isvar.loc[cont_grps.astype(bool)].groupby(cont_grps).sum()
    return counts.value_counts() / cont_grps.max()

repeat_stats(rng.initial_data, 'B')

3.0    0.5
2.0    0.5
Name: initial_data, dtype: float64

rng.df_在
rng
在代码中的任何地方都没有定义。错误信息很清楚:在函数的第3行调用
df.df\u in
,考虑到函数的输入,这没有多大意义,但是仍然有一个属性error
“SeriesGroupBy”对象没有属性“test\u for_B”
这非常好,我可以确认它正是我需要的,我有很多东西要学。。。谢谢