python填充nan_python - 如何从python中填充NaN值? - 堆栈内存溢出

您可以通过map创建新的Series ,然后用combine_first替换NaN 。

主要优点是没有必要的辅助列,以后有必要将其删除。

df1=pd.DataFrame({'gross(mean)':[np.nan,3.443000e+06, 4.746000e+05, 2.011249e+06, 10,20,30],

'interval':[1922,1927,1932, 1938,1932,1938,1953]})

df1['interval'] = pd.cut(df1['interval'], bins=[1920,1925,1930,1935,1940,1945,1950,1955])

print (df1)

gross(mean) interval

0 NaN (1920, 1925]

1 3443000.0 (1925, 1930]

2 474600.0 (1930, 1935]

3 2011249.0 (1935, 1940]

4 10.0 (1930, 1935]

5 20.0 (1935, 1940]

6 30.0 (1950, 1955]

df = pd.DataFrame({'name':['k','l'],

'gross':[1000, np.nan],

'interval':[1938, 1952]}, columns=['name','gross','interval'])

df['interval'] = pd.cut(df['interval'], bins=[1925,1930,1935,1940,1945,1950,1955])

print (df)

name gross interval

0 k 1000.0 (1935, 1940]

1 l NaN (1950, 1955]

mapped = df['interval'].map(df1.set_index('interval')['gross(mean)'].to_dict())

print (mapped)

0 20.0

1 30.0

Name: interval, dtype: float64

df['gross'] = df['gross'].combine_first(mapped)

print (df)

name gross interval

0 k 1000.0 (1935, 1940]

1 l 30.0 (1950, 1955]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值