【问题标题】:Apply regex replace to python pandas data frame将正则表达式替换应用于 python pandas 数据框
【发布时间】:2014-07-28 19:13:03
【问题描述】:

我正在尝试从存储在 pandas 数据框列中的 IP 地址中删除最后一个八位字节。

目前,我正在尝试运行以下代码:

def rem_last_oct(ip):
    return re.sub(r'\d+$', '', ip)

    # also tried running with plain string manipulation:
    # return ''.join(str(ip).rpartition('.')[:1])

df['cut_ipaddress'] = df['ipaddress'].apply(rem_last_oct)

由于某种原因,该函数可以在字符串上正常运行,但是当使用 apply 在数据帧上运行它时,它会返回空字符串,而不是前三个八位字节。

这样做的正确方法是什么?

【问题讨论】:

    标签: python regex pandas ip


    【解决方案1】:

    您可以使用str 属性的replace 方法(要访问字符串操作函数,请参阅docs):

    In [11]: s = pd.Series(["22.231.113.64", "194.66.82.11"])
    
    In [12]: s
    Out[12]:
    0    22.231.113.64
    1     194.66.82.11
    dtype: object
    
    
    In [14]: s.str.replace(r'\d+$', '')
    Out[14]:
    0    22.231.113.
    1     194.66.82.
    dtype: object
    

    顺便说一句,你上面的方法对我有用。也就是说,它适用于一个系列:

    In [20]: s.apply(rem_last_oct)
    Out[20]:
    0    22.231.113.
    1     194.66.82.
    

    但是您如何访问上面带有df['ipaddress'] 的列通常是一个系列,所以这也应该有效。你得到什么错误信息?

    【讨论】:

    • 我没有收到错误,但由于某种奇怪的原因,返回的值是空白的。奇怪的是,你的方法确实奏效了。
    猜你喜欢
    • 2020-09-02
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2021-03-20
    • 2023-04-06
    • 2014-10-07
    相关资源
    最近更新 更多