簡體   English   中英

從Python數據框的列中的每一行中刪除前x個字符

[英]Remove first x number of characters from each row in a column of a Python dataframe

我有一個包含大約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列中的每個字段中刪除前三個字符。

使用vectorised 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

值得注意的是,Pandas“vectorised” 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解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM