首页 > 解决方案 > 在具有各种数据类型的数据框列中查找字符串中的数字

问题描述

我有一个数据框(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'

标签: pythonpandassplit

解决方案


首先要注意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

推荐阅读