我是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()
有人可以帮助将此代码放入我可以在其他数据框中使用的函数吗?感谢。
编辑:删除大属性错误,现在已经回答了这个问题。
答案 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