Python统计面板数据日变化次数

Python count number of daily changes in panel data

我有一个面板数据的 pandas 数据框,其中每一行是一个人的时间序列,每一列是时间序列中的一天。我想每天计算每天发生变化的次数,这样我就可以确定每天发生变化的个人百分比。

indiv = ['Tom', 'Mike', 'Dave']
date_one = ['yes', 'yes', 'no']
date_two = ['no', 'yes', 'no']
date_three = ['yes', 'yes', 'yes']
df = pd.DataFrame(zip(indiv, date_one, date_two, date_three), columns = ['name', '2020-01-29', '2020-01-30', '2020-01-31'])

将索引设置为名称然后转置 df。

df = df.set_index('name').T
   name 2020-01-29 2020-01-30 2020-01-31
0   Tom        yes         no        yes
1  Mike        yes        yes        yes
2  Dave         no         no        yes

然后将 'yes' 和 'no' 值替换为 True 和 False

df.replace({'yes': True, 'no': False}, inplace=True)
   name  2020-01-29  2020-01-30  2020-01-31
0   Tom        True       False        True
1  Mike        True        True        True
2  Dave       False       False        True

现在对各列求和...

df['changes'] = df.sum(axis=1)

导致

name          Tom  Mike   Dave  changes
2020-01-29   True  True  False        2
2020-01-30  False  True  False        1
2020-01-31   True  True   True        3