【问题标题】:How do I extract numbers from the strings in a pandas column of 'object'?如何从“对象”的熊猫列中的字符串中提取数字?
【发布时间】:2021-06-11 04:24:00
【问题描述】:

我有一个名为“x”的数据框。

此数据框与房屋的大小和类型(例如 35A、9B、50C..)有关,属于“对象”类型,包含缺失值。

我只想从此数据框中提取数字并将它们转换为数字类型。

在这种情况下我该怎么办?

我尝试了以下方法,但没有成功:

df['x'] = df['x'].str[0:2]
df['x'] = pd.to_numeric(df['x'])

输出 ValueError:无法解析位置 3766 处的字符串“9A”

【问题讨论】:

  • 从答案中的 cmets 看来,数据不一定是统一的。您可能想研究这些数字的格式。如果您只需要第一个数字,那么@Tim 可以为您提供解决方案,但您可能必须丢弃剩余的字符。

标签: python pandas


【解决方案1】:

我会在这里使用str.extract

df['x'] = pd.to_numeric(df['x'].str.extract(r'^(\d+)'))

尝试使用纯子字符串方法的挑战在于我们不一定知道要使用多少个字符。正则表达式解决了这个问题。

【讨论】:

  • 我试过了,但是遇到了以下问题:TypeError: arg must be a list, tuple, 1-d array, or Series
  • @박혜림 x 中的每个条目是否包含至少以一位数字开头的门牌号?
  • 哦,我再查了一下,'x'包括'39D4-1b'这样的数据,也包括38和8这样的数据,都是数字组成的。
  • 'x'的缺失值在50%左右,去掉这个列会更好吗?
【解决方案2】:

您假设对于x 列中的字符串,前两个字符将始终是数字。不幸的是,您有一行 x9A 不会转换为数值。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2021-01-31
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 2020-11-17
    • 2020-03-07
    相关资源
    最近更新 更多