我有一个熊猫数据框,其中的索引包含年份,而其列则包含股息支出。现在,我想确定公司已连续支付了多少年的股息(列股息> 0)。
例如,对于下表,我希望结果为2(2019 + 2018)
year dividend
2019 1.89
2018 1.70
2017 0
2016 1.5
而对于这个4
year dividend
2019 1.89
2018 1.70
2017 1.6
2016 1.58
尽管下面的答案是可以解决的,但是它可以解决您的问题。
将其转换为pd.df
并使用带有ne()包装器的idxmin()来查找连续的除息。
year dividend
2019 1.89
2018 1.70
2017 0
2016 1.5
df = pd.DataFrame({'dividend' : [1.89,1.70,0,1.5]}, index=[2019,2018,2017,2016])
print('Continuous Divident value :', df.loc[ : df.dividend.idxmin()].ne(0).sum()[0])
Continuous Divident value : 2
year dividend
2019 1.89
2018 1.70
2017 1.6
2016 1.58
df = pd.DataFrame({'dividend' : [1.89,1.70,1.6,1.58]}, index=[2019,2018,2017,2016])
print('Continuous Divident value :', df.loc[ : df.dividend.idxmin()].ne(0).sum()[0])
Continuous Divident value : 4
编辑
根据您的评论,我只是玩过循环,希望这能满足您的要求。如果没有让我知道..
value = 0 if df['bool'].iloc[0] == 0 else (len(df) if len(df) == df.iloc[-1::]['bool'].values[0] else len(df.loc[: df[df['bool'].duplicated(keep = 'last')].index[0]]))
print('Continous divident value : ', value)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句