這兩天,有個(gè)小伙伴問我這么一個(gè)問題,就是說他公司給了他一個(gè)table, 大概是140萬行晃虫,其中有一列既有數(shù)字也有其它字符荠商。例如2021年02月01日
寂恬,想從里面僅僅把數(shù)字提取出來保存成日期格式,比如說2021-02-01
莱没,雖然最近忙得飛起初肉,但是看在當(dāng)年一起讀初中的崢嶸歲月,我大概花了5分鐘寫了一個(gè)demo饰躲,給他提供了三種解法牙咏。
第一步臼隔,構(gòu)造一個(gè)fake datasets, 模擬他的需求。
import pandas as pd
import numpy as np
demo = pd.read_excel("/home/xuzhongtian/Documents/ChenZhenwei_demo.xlsx", header=0)
demo
模擬數(shù)據(jù)如下:
City Date
0 福州 2021年03月01日
1 廈門 2021年03月02日
2 深圳 2021年03月03日
3 武漢 2021年03月04日
4 上海 2021年03月05日
5 青島 2021年03月06日
6 煙臺(tái) 2021年03月07日
7 荊州 2021年03月08日
即從Date這一列中妄壶,將日期提取出來摔握,保存為2021-03-01這種類型。
解決問題的時(shí)候丁寄,思維不能太固化氨淌。我們既可以通過將數(shù)字“提取出來”,也可以選擇將除了數(shù)字之外的其它字符“摳除”伊磺。
略加思忖盛正,給小伙伴提供了三種解法。
方法1:
#方法1:
pattern = "|".join(["年","月","日"])
demo.Date = demo.Date.str.replace(pattern, "-")
demo.Date.str.rstrip("-")
方法1結(jié)果:
方法2:
#方法2
demo.Date.str.strip().replace(dict(zip(["年","月","日"],["-","-",""])), regex=True)
方法2結(jié)果:
方法3:
temp = demo.Date.str.extract('(\d+).*?(\d+).*?(\d+)')
temp
temp[0]+"-"+temp[1]+"-"+temp[2]
方法3結(jié)果:
方法很多屑埋,肯定也不止這幾種豪筝,但是我們做數(shù)據(jù)分析,是以解決問題為導(dǎo)向摘能,是在速度和效率之間续崖,尋找一個(gè)balance, 畢竟我們知道茴香豆的茴的一種寫法,就足夠了徊哑。
Done!