2024-05-19 05:07:55 发布
网友
我正在处理这样的熊猫数据帧:
id x 0 1 10 1 1 20 2 2 100 3 2 200 4 1 NaN 5 2 NaN 6 1 300 7 1 NaN
我想用具有相同“id”值的行中的前一个非NAN“x”替换每个NAN“x”:
id x 0 1 10 1 1 20 2 2 100 3 2 200 4 1 20 5 2 200 6 1 300 7 1 300
有没有什么巧妙的方法可以做到这一点而不需要手动在行上循环?
可以对每个组执行groupby/forward-fill操作:
import numpy as np import pandas as pd df = pd.DataFrame({'id': [1,1,2,2,1,2,1,1], 'x':[10,20,100,200,np.nan,np.nan,300,np.nan]}) df['x'] = df.groupby(['id'])['x'].ffill() print(df)
收益率
id x 0 1 10.0 1 1 20.0 2 2 100.0 3 2 200.0 4 1 20.0 5 2 200.0 6 1 300.0 7 1 300.0
df id val 0 1 23.0 1 1 NaN 2 1 NaN 3 2 NaN 4 2 34.0 5 2 NaN 6 3 2.0 7 3 NaN 8 3 NaN df.sort_values(['id','val']).groupby('id').ffill() id val 0 1 23.0 1 1 23.0 2 1 23.0 4 2 34.0 3 2 34.0 5 2 34.0 6 3 2.0 7 3 2.0 8 3 2.0
使用sort_values、groupby和ffill,这样,如果第一个值或第一组值有Nan值,它们也会被填充。
Nan
可以对每个组执行groupby/forward-fill操作:
收益率
使用sort_values、groupby和ffill,这样,如果第一个值或第一组值有
Nan
值,它们也会被填充。相关问题 更多 >
编程相关推荐