将统计信息代码添加到Python中的函数中

时间:2016-07-07 13:42:42

标签: python pandas

我是Python的新手,并试图学习如何编写函数。 this post的答案突出显示了如何从数据框中获取某些统计信息,我想在函数中使用它。

这是我的尝试,但它无法使用AttributeError: 'SeriesGroupBy' object has no attribute 'test_for_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()

有人可以帮助将此代码放入我可以在其他数据框中使用的函数吗?感谢。

编辑:删除大属性错误,现在已经回答了这个问题。

1 个答案:

答案 0 :(得分:1)

你走了:

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