问题描述
我有一个XMLParser
,其中有两列,分别是“早晨”和“晚上”,分别代表早晨和晚上的压力测量值。列中的值为“高”,“中”或“低”。
pandas data frame
我想创建两个列表,“ morning evening
0 high high
1 high medium
2 high medium
3 high low
4 medium high
”和“ pressure_change
”。 “ pressure_change_likelihood
”描述了早晨和晚上之间发生了什么类型的压力变化,例如“高-低”是指从早晨的高压力到夜间的低压力的变化。 “ pressure_change
”描述了给定类型的压力变化有多频繁,例如,如果早晨的压力较高,则在一半的时间晚上(0.50)变为中等压力。
pressure_change_likelihood
我已经可以创建'pressure_change = [['high-high','high-medium','high-low'],['medium-high','medium-medium','medium-low'],['low-high','low-medium','low-low']]
pressure_change_likelihood = [[0.25,0.50,0.25],[0.33,0.00,0.67],[0.00,1.00,0.00]]
'了,但是问题是'pressure_change
'。我以为我会尝试使用pressure_change_likelihood
作为起点,然后将输出转换为列表列表,但是生成的熊猫系列不包含从未发生过的事件的0.00值和顺序的值不同于我需要的值。
pd.df.groupby()
感谢您的帮助!
解决方法
让我们尝试crosstab
s = pd.crosstab(df.morning,df.evening,normalize='index').stack()
Out[84]:
morning evening
high high 0.250000
low 0.250000
medium 0.500000
low high 0.000000
low 0.000000
medium 1.000000
medium high 0.333333
low 0.666667
medium 0.000000
dtype: float64