【发布时间】:2017-09-09 15:39:19
【问题描述】:
我在 pandas 中有一列混合了字符串和数字 我想从字符串中去掉数字。
A
11286011
11268163
C7DDA72897
C8ABC557
Abul
C80DAS577
C80DSS665
想要输出为
A
C7DDA72897
C8ABC557
Abul
C80DAS577
C80DSS665
【问题讨论】:
标签: python-2.7 python-3.x pandas
我在 pandas 中有一列混合了字符串和数字 我想从字符串中去掉数字。
A
11286011
11268163
C7DDA72897
C8ABC557
Abul
C80DAS577
C80DSS665
想要输出为
A
C7DDA72897
C8ABC557
Abul
C80DAS577
C80DSS665
【问题讨论】:
标签: python-2.7 python-3.x pandas
In [52]: df
Out[52]:
A
0 11286011
1 11268163
2 C7DDA72897
3 C8ABC557
4 C80DAS577
5 C80DSS665
In [53]: df = pd.to_numeric(df.A, errors='coerce').dropna()
In [54]: df
Out[54]:
0 11286011.0
1 11268163.0
Name: A, dtype: float64
或使用正则表达式:
In [59]: df.loc[~df.A.str.contains(r'\D+')]
Out[59]:
A
0 11286011
1 11268163
【讨论】:
您可以使用.str.isnumeric 用于布尔切片。
df[df.A.astype(str).str.isnumeric()]
A
0 11286011
1 11268163
正如@MaxU 所指出的,假设每个元素都已经是一个字符串,您可以将其限制为
df[df.A.str.isnumeric()]
A
0 11286011
1 11268163
【讨论】:
A已经是字符串(对象)dtype,所以我们可以省略.astype(str)...
dtype==object 并不意味着所有元素都是字符串。您可以在数组中有一个实际的浮点数或整数。如果这样做,str.isnumeric 将失败。
.isnumeric() 在这种情况下将 retyren NaN