python - 在具有各种数据类型的数据框列中查找字符串中的数字
问题描述
我有一个数据框(df):
df = pd.DataFrame({'A' : ['it is 54321', 'it is 54322']})
我可以找到其中的数字:
df['B'] = df['A'].apply(lambda str:[int(s) for s in str.split() if s.isdigit()])
但是当有各种数据类型时:
df = pd.DataFrame({'A' : [54321, 'it is 54322', 'is it 54323 or 4?', np.NaN]})
我得到:
AttributeError: 'int' object has no attribute 'split'
解决方案
首先要注意str
的是 Python 关键字,避免将其用作变量。
现在,为了解决您的问题,您可以使用以下命令检查单元格是否为字符串isinstance
:
df['B'] = df['A'].apply(lambda x:[int(s) for s in x.split() if s.isdigit()]
if isinstance(x,str) else x)
输出:
A B
0 54321 54321
1 it is 54322 [54322]
2 is it 54323 or 4? [54323]
3 NaN NaN
推荐阅读
- https - kohana 和 HTTPS 的问题
- powershell - 通过计划任务杀死特定用户的 WINdows 进程
- arrays - 将 json 对象数组转换为 json
- javascript - 在 HTML 中使用模式弹出窗口并返回上一页
- c# - .Net Core 3.1 Web Api AWS Lambda,将文件上传到 S3 - 损坏的文件结果
- java - 在 Spring Batch 中将 writer 添加到相同的 datfile 中
- python - 我可以在 CNN 中展平后添加数据吗?
- javascript - javascript:我可以使用原型定义一个“私有”变量吗?
- magento2 - 如何更改 Magento 2 中 MegaMenu 的断点?
- python - 为什么 Python 中的 with 块不需要 global 关键字?