我试图找出一种方法来分隔存储在数据帧列中的值,具体取决于值是否在预定义的范围内。该列为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之间的值分开并将其写入新的数据帧。在整数列上进行这种比较非常简单,但是这些数据混合了字符和整数,所以我不知道该怎么做。任何帮助将不胜感激。
答案 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