我有一个这样的熊猫数据框:
Balance Jan Feb Mar Apr 0 9.724135 0.389376 0.464451 0.229964 0.691504 1 1.114782 0.838406 0.679096 0.185135 0.143883 2 7.613946 0.960876 0.220274 0.788265 0.606402 3 0.144517 0.800086 0.287874 0.223539 0.206002 4 1.332838 0.430812 0.939402 0.045262 0.388466
我想通过弄清楚从1月到4月的值是单调递减(如索引1和3中的行)是否分组,然后将每个组的余额加起来,即最终我想要最终得到两个数字(1.259299为减少的时间序列,其他18.670919).
我想如果我可以添加一列“正在减少”,包括布尔值,我可以使用大熊猫的groupby做这些金额,但是如何创建这个列?
谢谢,
安妮
解决方法
您可以使用algos中的一个isonmon功能:
In [10]: months = ['Jan','Feb','Mar','Apr'] In [11]: df.loc[:,months].apply(lambda x: pd.algos.is_monotonic_float64(-x)[0],axis=1) Out[11]: 0 False 1 True 2 False 3 True 4 False dtype: bool
is_monotonic检查数组是否减少,因此是-x.value.
(这似乎比Tom的解决方案快得多,甚至使用提供的小型DataFrame).