【问题标题】:Pandas Strip numbers from a string column in pythonPandas从python中的字符串列中去除数字
【发布时间】: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


【解决方案1】:
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

【讨论】:

  • 感谢@MaxU,您的 RegEx 为我解决了问题。效果很好。
【解决方案2】:

您可以使用.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)...
  • @MaxU dtype==object 并不意味着所有元素都是字符串。您可以在数组中有一个实际的浮点数或整数。如果这样做,str.isnumeric 将失败。
  • 这是一个好点!我刚刚测试过它-.isnumeric() 在这种情况下将 retyren NaN
  • @piRSquared 也感谢您的帮助。
猜你喜欢
  • 2017-01-27
  • 1970-01-01
  • 2015-07-30
  • 2010-10-19
  • 2021-09-21
  • 2018-10-21
相关资源
最近更新 更多