【问题标题】:Remove first x number of characters from each row in a column of a Python dataframe从 Python 数据框的一列中的每一行中删除前 x 个字符
【发布时间】:2017-07-10 00:40:25
【问题描述】:

我有一个包含大约 1,500 行和 15 列的 Python 数据框。对于一个特定的列,我想删除每行的前 3 个字符。作为一个简单的例子,这里是一个数据框:

import pandas as pd

d = {
    'Report Number':['8761234567', '8679876543','8994434555'],
    'Name'         :['George', 'Bill', 'Sally']
     }

d = pd.DataFrame(d)

我想删除数据框dReport Number 列中每个字段的前三个字符。

【问题讨论】:

    标签: python string pandas dataframe replace


    【解决方案1】:

    使用矢量化的str 方法对每个字符串条目进行切片

    In [11]:
    d['Report Number'] = d['Report Number'].str[3:]
    d
    
    Out[11]:
         Name Report Number
    0  George       1234567
    1    Bill       9876543
    2   Sally       4434555
    

    【讨论】:

      【解决方案2】:

      值得注意的是,Pandas “矢量化”str 方法只不过是 Python 级别的循环。

      假设数据干净,您通常会发现列表理解更有效:

      # Python 3.6.0, Pandas 0.19.2
      
      d = pd.concat([d]*10000, ignore_index=True)
      
      %timeit d['Report Number'].str[3:]           # 12.1 ms per loop
      %timeit [i[3:] for i in d['Report Number']]  # 5.78 ms per loop
      

      请注意,这些不是等效的,因为列表推导不处理空数据和其他边缘情况。对于这些情况,您可能更喜欢 Pandas 解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-03
        • 2021-11-30
        • 2021-02-03
        • 2019-04-25
        • 2021-05-30
        • 2017-06-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多