[英]How to remove the first n character from all the cells in a column using python pandas?
[英]Remove first character from pandas column if the number 1
以下代碼刪除了任何電話號碼列中的所有破折號。 如果電話號碼以1開頭,如何在這些列中刪除電話號碼的第一個字符。我基本上希望所有十位數字都沒有前導1。
import pandas as pd
import numpy as np
import re
df = pd.read_csv('test2.csv')
cols_to_check = ['Phone', 'phone', 'Phone.1']
df[cols_to_check] = df[cols_to_check].replace({'-':''}, regex=True)
df.to_csv('testnew.csv', mode = 'w', index=False)
我會用applymap
選項1
使用str.replace
將'-'
替換為''
。 我假設我們總是可以接受最后10位數字。
df[cols_to_check].applymap(lambda x: x.replace('-', '')[-10:])
Phone phone Phone1
0 1234567890 1234567890 1234567890
1 1234567890 1234567890 1234567890
2 1234567890 1234567890 1234567890
選項2
使用re.sub
但是,如果要去除所有非數字字符,請使用regex模塊re
並執行與選項1中類似的操作
import re
df[cols_to_check].applymap(lambda x: re.sub(r'\D', '', x)[-10:])
Phone phone Phone1
0 1234567890 1234567890 1234567890
1 1234567890 1234567890 1234567890
2 1234567890 1234567890 1234567890
選項3
我們還可以使用pd.Series.str
字符串訪問器。 但是,我們需要先分解為一系列。
df[cols_to_check].stack().str.replace('\D', '').str[-10:].unstack()
Phone phone Phone1
0 1234567890 1234567890 1234567890
1 1234567890 1234567890 1234567890
2 1234567890 1234567890 1234567890
設定
df = pd.DataFrame(dict(
Phone=['1-123-456-7890', '123-4567890', '11234567890'],
phone=['1-123-456-7890', '123-4567890', '11234567890'],
Phone1=['1-123-456-7890', '123-4567890', '11234567890'],
Other=[1, 2, 3]
))
cols_to_check = ['Phone', 'phone', 'Phone1']
df
Other Phone Phone1 phone
0 1 1-123-456-7890 1-123-456-7890 1-123-456-7890
1 2 123-4567890 123-4567890 123-4567890
2 3 11234567890 11234567890 11234567890
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.