计算每年的翻转次数

时间:2019-07-29 05:10:48

标签: python pandas datetime

我正在尝试按年份计算翻转次数,但是在特定步骤上遇到了问题。

我创建了一个识别翻转的功能。 (如果在上次交易的一年内将其出售,则该物业被翻转)

我还计算了每个属性的每笔交易的翻转及其年份(列YearAndFlip?)。

每一行代表一个属性。每行(属性)具有一个或多个事务。对于每笔交易,无论相应交易是否翻转,我也分别是相应的年份。

1 =翻转

0 =不翻转

该表如下所示:


ID|Trans_0|Trans_1|Trans_2|YearAndFlip?_0|YearAndFlip?_1|YearAndFlip?_2

1 |AYZX   |LKKW   |ZYIL   |2010 0        |2010 1        |2011 0 
2 |AYWW   |MOSL   |ZYWW   |1996 0        |1999 0        |2003 0 
3 |AYLO   |MOSD   |ZYLO   |1996 0        |2001 0        |2001 1 
4 |AKSD   |MWUY   |ZZWW   |2010 0        |2010 1        |2010 1 
5 |AOPT   |MEEY   |ZZYX   |2010 0        |2010 1        |2011 0 
6 |ALLW   |nan    |nan    |2009 0        |nan  0        |nan  0    

输出应显示每年翻转的次数。但是我很困惑,可以从上一张表继续进行。

例如,从该虚拟表中可以看到,1996年有2次翻转0(ID#2和#3)。同样,2010年有1次2次翻转(ID#5)。

Year|Flips|Counts
1996|0    |2
1999|0    |1
2001|1    |1
2003|0    |1
2009|0    |1
2010|1    |2
    |2    |1
2011|0    |2

1 个答案:

答案 0 :(得分:1)

http://xx.xx.xx.xx:8000/%7B%7B%20url_for('analyze')%20%7D%7D

输出:

cols = [c for c in df.columns.to_list() if c.startswith('YearAndFlip')]
res = df[cols].stack().str.split(expand=True).groupby([0])[1].value_counts()
res.index.rename(['Year', 'Flips'], inplace=True)
res[res.index.get_level_values(0)!='nan']