python - 可靠地处理 pandas 中的 nans
问题描述
什么是最好的和希望最简单的方法来编写 NaN,同时注意不同的情况?
在此示例df
中,我想Routed (Expected) Site
根据业务逻辑替换其中的 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)
我也试过这个,它以某种方式覆盖了所有的Routed (Expected) Site
s None
:
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'])
解决方案
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)
推荐阅读
- php - 如何从 MySQL 中获取值以选择/选项标签
- pytorch - 损失振荡而不是减少 seq2seq gru pytorch
- c# - 诊断工具意外失败
- c++ - 你能告诉我函数的时间复杂度(Big-O)是多少吗?
- python - 使用 selenium (Python) 实现 Instagram 自动化 - 关注和取消关注按钮
- cucumber - 无法在 serenity bdd 中并行执行测试用例
- flutter - 如何在 Flutter 的 material_tag_editor 中使用 'Enter' 作为分隔符
- flutter - Flutter Repaint 边界重绘规则
- javascript - JS 函数适用于所有浏览器但并非所有机器
- php - PHP数组到XML cdata