查找字符串是否在Pandas范围内

时间:2018-04-24 09:30:05

标签: python pandas comparison

我试图找出一种方法来分隔存储在数据帧列中的值,具体取决于值是否在预定义的范围内。该列为object数据类型,包含字符和整数。以下是数据示例:

      code
0     C92.20
1     C80
2     C12.30
3     C18.5
4     C40.5
5     E66.01
6     C78.5
7     L73.2
8     D46.22
9     N18.3
10    N18.5
11    M34
12    M37
13    N18.8

我想知道如何将C00-C99之间或N18.3-N18.6之间的值分开并将其写入新的数据帧。在整数列上进行这种比较非常简单,但是这些数据混合了字符和整数,所以我不知道该怎么做。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式来分隔您的字母和数字,这样您就可以像往常一样应用数值计算:

import pandas as pd

df = pd.DataFrame({'code': ['C92.20','C80','C12.30','C18.5','C40.5','E66.01','C78.5','L73.2','D46.22','N18.3','N18.5','M34','M37','N18.8']})

df[['Let', 'Num']] = df['code'].str.extract(r'([A-Za-z]+)([\d\.]+)', expand=True)
df['Num'] = df['Num'].astype(float)

返回以下数据帧:

      code Let    Num
0   C92.20   C  92.20
1      C80   C  80.00
2   C12.30   C  12.30
3    C18.5   C  18.50
4    C40.5   C  40.50
5   E66.01   E  66.01
6    C78.5   C  78.50
7    L73.2   L  73.20
8   D46.22   D  46.22
9    N18.3   N  18.30
10   N18.5   N  18.50
11     M34   M  34.00
12     M37   M  37.00
13   N18.8   N  18.80