我正在尝试按年份计算翻转次数,但是在特定步骤上遇到了问题。
我创建了一个识别翻转的功能。 (如果在上次交易的一年内将其出售,则该物业被翻转)
我还计算了每个属性的每笔交易的翻转及其年份(列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
答案 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']