我有以下代码,所以从data_current
我需要data_needed
.我想我必须使用groupby
,smth。喜欢:
data_needed=data_current['Code'].fillna(data_current.groupby('animal')['Code'])
但它并没有真正起作用...
import pandas as pd
import numpy as np
data_current=pd.DataFrame({'animal':['rabbit','badger', 'hamster','badger'],'Code':['I-1','I-2','I-3',np.nan]})
data_current
data_needed=pd.DataFrame({'animal':['rabbit','badger', 'hamster','badger'],'Code':['I-1','I-2','I-3','I-2']})
data_needed
顺便问一下,如何将i-Python笔记本单元格/输出粘贴到Stackoverflow问题中,以便每个人都可以直接在此页面上看到输出?
您可以
按"动物"列分组,然后在"动物"列上调用transform
只需调用fillna
并传递参数method='ffill'
,这将填充任何NaN
值:
In [38]:
data_current['code'] = data_current.groupby('animal')['code'].transform(lambda x: x.fillna(method='ffill'))
data_current
Out[38]:
animal code
0 rabbit I-1
1 badger I-2
2 hamster I-3
3 badger I-2