您會在問題結尾找到具有可重複輸入的片段以及期望輸出的示例。識別並計算熊貓數據框中的獨特模式
挑戰:
我有這樣一個數據幀:
數據框有這樣的1和0的模式兩列:
或者這個:
列的數量會有所不同,模式的長度也會不同。 但是,數據框中的唯一數字將爲0或1.
我想識別這些模式,計算它們的每次出現次數,然後構建包含結果的數據幀。爲了簡化整個事情,我想專注於的,並忽略零。在這種特定情況下所需的輸出將是:在column_A
我想的程序,以確定,作爲一個例子,圖案[1,1,1]發生兩次,而不是完全在column_B中。請注意,我已將這些模式的總和用作數據框中的索引。
重現輸入:
import pandas as pd
df = pd.DataFrame({'column_A':[1,1,1,0,0,0,1,0,0,1,1,1],
'column_B':[1,1,1,1,1,0,0,0,1,1,0,0]})
colnames = list(df)
df[colnames] = df[colnames].apply(pd.to_numeric)
datelist = pd.date_range(pd.datetime.today().strftime('%Y-%m-%d'), periods=len(df)).tolist()
df['dates'] = datelist
df = df.set_index(['dates'])
print(df)
所需的輸出:
df2 = pd.DataFrame({'pattern':[5,3,2,1],
'column_A':[0,2,0,1],
'column_B':[1,0,1,0]})
df2 = df2.set_index(['pattern'])
print(df2)
我嘗試至今:
我一直在努力尋找解決方案,其中包括嵌套for循環,我計算runnin g每次觀測值等於零時重置的總和。它還包括諸如df.apply(lambda x: x.value_counts())
之類的功能。但至少可以說,至少不是100%正確。
謝謝你的任何其他建議!
也許這個是類似的:https:// stackoverflow。com/questions/42555031/pandas-find-sequence-or-pattern-in-column – Moritz