2016-07-07 68 views
-1

我對Python相對較新,並試圖學習如何編寫函數。 this post的答案突出顯示瞭如何從數據框中獲取某些統計信息,並且我希望在函數中使用它。將統計代碼添加到Python中的函數

這是我的嘗試,但它不與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

'rng.df_in'。在你的代碼中沒有定義'rng'。 –

+0

錯誤信息是明確的:在函數的第3行調用'df.df_in',考慮到函數 – IanS

+0

修正的輸入錯誤但沒有多大意義,但仍然存在屬性錯誤''SeriesGroupBy'對象沒有屬性' test_for_B'' – ade1e

回答

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 
+0

這是一流的,我可以確認它確實是我需要的東西,我有很多東西要學習...謝謝 – ade1e

相關問題