python – 访问最后一个非null值的Pandas

python – 访问最后一个非null值的Pandas,第1张

概述我想用给定组的最后一个有效值填充数据帧NaN.例如: import pandas as pdimport random as randyimport numpy as npdf_size = int(1e1) df = pd.DataFrame({'category': randy.sample(np.repeat(['Strawberry','Apple' 我想用给定组的最后一个有效值填充数据帧NaN.例如:
import pandas as pdimport random as randyimport numpy as npdf_size = int(1e1)                df = pd.DataFrame({'category': randy.sample(np.repeat(['StrawBerry','Apple',],df_size),'values': randy.sample(np.repeat([np.NaN,1],df_size)},index=randy.sample(np.arange(0,10),df_size)).sort_index(by=['category'],ascending=[True])

提供:

category   value7       Apple     NaN6       Apple       14       Apple       05       Apple     NaN1       Apple     NaN0  StrawBerry       18  StrawBerry     NaN2  StrawBerry       03  StrawBerry       09  StrawBerry     NaN

我想要计算的列如下所示:

category   value  last_value7       Apple     NaN         NaN6       Apple       1         NaN4       Apple       0           15       Apple     NaN           01       Apple     NaN           00  StrawBerry       1         NaN8  StrawBerry     NaN           12  StrawBerry       0           13  StrawBerry       0           09  StrawBerry     NaN           0

尝试shift()和iterrows()但无济于事.

解决方法 看起来你想先做一个 ffill,然后做一个 shift
In [11]: df['value'].ffill()Out[11]:7   NaN6     14     05     01     00     18     12     03     09     0name: value,dtype: float64In [12]: df['value'].ffill().shift(1)Out[12]:7   NaN6   NaN4     15     01     00     08     12     13     09     0name: value,dtype: float64

要对每个组执行此 *** 作,您必须先按groupby类别,然后应用此功能:

In [13]: g = df.groupby('category')In [14]: g['value'].apply(lambda x: x.ffill().shift(1))Out[14]:7   NaN6   NaN4     15     01     00   NaN8     12     13     09     0dtype: float64In [15]: df['last_value'] = g['value'].apply(lambda x: x.ffill().shift(1))
总结

以上是内存溢出为你收集整理的python – 访问最后一个非null值的Pandas全部内容,希望文章能够帮你解决python – 访问最后一个非null值的Pandas所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1205128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存