Python 可靠地处理熊猫中的NAN
什么是最好的,希望也是最简单的方法来写NAN,同时注意不同的情况 在本例中,Python 可靠地处理熊猫中的NAN,python,pandas,Python,Pandas,什么是最好的,希望也是最简单的方法来写NAN,同时注意不同的情况 在本例中,df,我想根据业务逻辑替换路由(预期)站点中的NAN: DBN DBN - Exam Routed (Expected) Site 00000A 00000A - Scie A00000 750000 750000 - Scie NaN 840000 840000 - Scie NaN 我想要
df
,我想根据业务逻辑替换路由(预期)站点
中的NAN:
DBN DBN - Exam Routed (Expected) Site
00000A 00000A - Scie A00000
750000 750000 - Scie NaN
840000 840000 - Scie NaN
我想要
DBN DBN - Exam Routed (Expected) Site
00000A 00000A - Scie A00000
750000 750000 - Scie 75 (Hospital)
840000 840000 - Scie 84 (Charter)
我使用的代码实际上并没有指出NaN是哪种情况:
df['Routed(Expected)Site'].fillna('Charter or Hospital',inplace=True)
我还尝试了这个方法,它以某种方式用无
覆盖了所有路由(预期)站点
:
def routed_site_exceptions(DBN, routed_site):
DBN = str(DBN)
if DBN.startswith("84") and not routed_site:
return '84 (Charter)'
if DBN.startswith('75') and not routed_site:
return '75 (Hospital)'
df['Routed (Expected) Site'] = np.vectorize(routed_site_exceptions)(df['DBN'],
df['Routed (Expected) Site'])
如前所述,您可以执行以下操作:
# get the new values
s = df.DBN.str[:2].map({'75': '75 (Hospital)',
'84': '84 (Charter)'})
# map to the data
df['Routed (Expected) Site'].fillna(s, inplace=True)
输出:
DBN DBN - Exam Routed (Expected) Site
0 00000A 00000A - Scie A00000
1 750000 750000 - Scie 75 (Hospital)
2 840000 840000 - Scie 84 (Charter)
fillna
和map
我假设我不知道您的业务逻辑将包含的所有内容。所以我把它概括起来
def routed_site_exceptions(DBN):
DBN = str(DBN)
if DBN.startswith("84"):
return '84 (Charter)'
if DBN.startswith('75'):
return '75 (Hospital)'
df.fillna({'Routed (Expected) Site': df.DBN.map(routed_site_exceptions)})
DBN DBN - Exam Routed (Expected) Site
0 00000A 00000A - Scie A00000
1 750000 750000 - Scie 75 (Hospital)
2 840000 840000 - Scie 84 (Charter)
谢谢,我使用了:``def routed_site_exceptions(DBN):''替换包括特许学校和D79学校在内的异常路由站点。仅在一开始不存在值时使用:param DBN:string |:return:string | status |''DBN=str(DBN)if DBN.startswith(“84”):return'84(Charter)'if DBN.startswith('75'):return'75(医院)'df['Routed(预期)Site'].fillna(df['DBN'].map(路由站点异常),inplace=True)```