【发布时间】:2018-12-04 19:17:33
【问题描述】:
下面的代码提供了指定值更改次数的累积count。该值必须更改才能返回计数。
import pandas as pd
import numpy as np
d = ({
'Who' : ['Out','Even','Home','Home','Even','Away','Home','Out','Even','Away','Away','Home','Away'],
})
#Specified Values
Teams = ['Home', 'Away']
for who in Teams:
s = df[df.Who==who].index.to_series().diff()!=1
df['Change_'+who] = s[s].cumsum()
输出:
Who Change_Home Change_Away
0 Out NaN NaN
1 Even NaN NaN
2 Home 1.0 NaN
3 Home NaN NaN
4 Even NaN NaN
5 Away NaN 1.0
6 Home 2.0 NaN
7 Out NaN NaN
8 Even NaN NaN
9 Away NaN 2.0
10 Away NaN NaN
11 Home 3.0 NaN
12 Away NaN 3.0
我正在尝试根据 Home 和 Away 之前的值对输出进行进一步排序。在上面的代码中并没有区分 Home 和 Away 的变化。它只计算更改为Home/Away 的次数。
有没有办法更改上面的代码,将其拆分为 Home/Away 的更改来源?还是必须重新开始?
我的预期输出是:
Even_Away Even_Home Swap_Away Swap_Home Who
0 Out
1 Even
2 1 Home
3 Home
4 Even
5 1 Away
6 1 Home
7 Out
8 Even
9 2 Away
10 Away
11 2 Home
12 1 Away
所以Even_ 表示从Even 到Home/Away 的次数,Swap_ 表示从Home to Away 的次数,反之亦然。
【问题讨论】:
-
哈!我的错。谢谢
标签: python pandas loops numpy count