我有看起來像這樣的資料
0 504189219
1 500618053
2 0537533477
3 966581566618
4 00536079946
我希望輸出是這樣的
504189219
500618053
537533477
581566618
536079946
uj5u.com熱心網友回復:
使用str.extract:
df['Col'] = df['Col'].str.extract('(5\d{8})')
print(df)
# Output
Col
0 504189219
1 500618053
2 537533477
3 581566618
4 536079946
設定:
df = pd.DataFrame({'Col': ['504189219', '500618053', '0537533477',
'966581566618', '00536079946']})
print(df)
# Output
Col
0 504189219
1 500618053
2 0537533477
3 966581566618
4 00536079946
uj5u.com熱心網友回復:
有一個圖書館phonenumbers可以幫助您完成這項作業,請參閱這篇文章
uj5u.com熱心網友回復:
使用與 Corralien 相同的設定,此方法也是可行的:
df = pd.DataFrame({'Col': ['504189219', '500618053', '0537533477',
'966581566618', '00536079946']})
def getNumber(n):
return n[n.find('5'):n.find('5') 9]
df['Col'] = df['Col'].apply(getNumber)
print(df)
使用 lambda 運算式也可以實作相同的結果。
其他答案原本沒有考慮到9個數字的約束。
uj5u.com熱心網友回復:
這可能是一種更穩健的方法:
import pandas as pd
def fix(col):
return col[-9:] if len(col) > 8 and col[-9] == '5' else col
df = pd.DataFrame({'Col': ['0404189219', '500618053', '0537533477',
'966581566618', '00536079946']})
df['Col'] = df['Col'].apply(fix)
print(df)
輸出:
Col
0 0404189219
1 500618053
2 537533477
3 581566618
4 536079946
請注意,在沒有“5”的情況下,原始值如何保持不變
uj5u.com熱心網友回復:
對于范圍內的 r(len(df.Col)): df.Col[r][df.Col[r].find("5"):]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/424790.html
上一篇:用dict映射df陣列列
