python – 如何在pandas的apply函数中测试nan?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 如何在pandas的apply函数中测试nan?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1667字,纯文字阅读大概需要3分钟。
内容图文
![python – 如何在pandas的apply函数中测试nan?](/upload/InfoBanner/zyjiaocheng/819/21d2a385efcb4e7db47a7fbd3cff8a80.jpg)
我有一个简单的应用函数,我在一些列上执行.但是,它继续被大熊猫的NaN值绊倒.
input_data = np.array(
[
[random.randint(0,9) for x in range(2)]+['']+['g'],
[random.randint(0,9) for x in range(3)]+['g'],
[random.randint(0,9) for x in range(3)]+['a'],
[random.randint(0,9) for x in range(3)]+['b'],
[random.randint(0,9) for x in range(3)]+['b']
]
)
input_df = pd.DataFrame(data=input_data, columns=['B', 'C', 'D', 'label'])
我有一个像这样的简单lambda:
input_df['D'].apply(lambda aCode: re.sub('\.', '', aCode) if not np.isnan(aCode) else aCode)
它会被NaN值绊倒:
File "<pyshell#460>", line 1, in <lambda>
input_df['D'].apply(lambda aCode: re.sub('\.', '', aCode) if not np.isnan(aCode) else aCode)
TypeError: Not implemented for this type
所以,我尝试只测试Pandas补充的nan值:
np.isnan(input_df['D'].values[0])
np.isnan(input_df['D'].iloc[0])
两者都得到同样的错误.
我不知道如何测试除np.isnan之外的nan值.有更简单的方法吗?谢谢.
解决方法:
你的代码失败,因为你的第一个条目是一个空字符串,而np.isnan不理解空字符串:
In [55]:
input_df['D'].iloc[0]
Out[55]:
''
In [56]:
np.isnan('')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-56-a9f139a0c5b8> in <module>()
----> 1 np.isnan('')
TypeError: Not implemented for this type
ps.notnull确实有效:
In [57]:
import re
input_df['D'].apply(lambda aCode: re.sub('\.', '', aCode) if pd.notnull(aCode) else aCode)
Out[57]:
0
1 3
2 3
3 0
4 3
Name: D, dtype: object
但是,如果您只想替换某些东西,那么只需使用.str.replace:
In [58]:
input_df['D'].str.replace('\.','')
Out[58]:
0
1 3
2 3
3 0
4 3
Name: D, dtype: object
内容总结
以上是互联网集市为您收集整理的python – 如何在pandas的apply函数中测试nan?全部内容,希望文章能够帮你解决python – 如何在pandas的apply函数中测试nan?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。