下午好,我有一个dataframe
dataframe = df
NPI Fa Name
1100
1100 Johnson
1100
5555
2222 Meghan
2222
4444
4444
我的目标是根据相应的NPI填写缺少的FA名称
NPI Fa Name
1100 Johnson
1100 Johnson
1100 Johnson
5555
2222 Meghan
2222 Meghan
4444
4444
我知道这可能是一项简单的任务,但是编码很明智,我很难弄清楚它。请帮忙!
如果订单很重要,则使用 GroupBy.apply
,向前和背面填充缺失值:
#if necessary
df['Fa Name'] = df['Fa Name'].replace('', np.nan)
df['Fa Name'] = df.groupby('NPI')['Fa Name'].apply(lambda x: x.ffill().bfill())
print (df)
NPI Fa Name
0 1100 Johnson
1 1100 Johnson
2 1100 Johnson
3 5555 NaN
4 2222 Meghan
5 2222 Meghan
6 4444 NaN
7 4444 NaN
如果不是,则按两列进行拳头排序,然后使用GroupBy.ffill
:
df = df.sort_values(['NPI','Fa Name'])
df['Fa Name'] = df.groupby('NPI')['Fa Name'].ffill()
print (df)
NPI Fa Name
1 1100 Johnson
0 1100 Johnson
2 1100 Johnson
4 2222 Meghan
5 2222 Meghan
6 4444 NaN
7 4444 NaN
3 5555 NaN