您会在问题结尾找到具有可重复输入的片段以及期望输出的示例。识别并计算熊猫数据框中的独特模式
挑战:
我有这样一个数据帧:
数据框有这样的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