Pandas字符串處理

      網友投稿 866 2022-05-30

      Pandas字符串處理

      Series.str字符串方法列表參考文檔

      文章目錄

      Pandas字符串處理

      讀取數據

      獲取Series的str屬性,使用各種字符串處理函數

      使用str的startswith、contains等得到bool的Series可以做條件查詢

      需要多次str處理的鏈式操作

      使用正則表達式的處理

      Pandas的字符串處理:

      使用方法:先獲取Series的str屬性,然后在屬性上調用函數;

      只能在字符串列上使用,不能數字列上使用;

      Dataframe上沒有str屬性和處理方法

      Series.str并不是Python原生字符串,而是自己的一套方法,不過大部分和原生str很相似;

      本節演示內容:

      獲取Series的str屬性,然后使用各種字符串處理函數

      使用str的startswith、contains等bool類Series可以做條件查詢

      需要多次str處理的鏈式操作

      使用正則表達式的處理

      讀取數據

      import pandas as pd

      1

      df = pd.read_csv("data.xlsx") df.head()

      1

      2

      3

      df.dtypes

      1

      ymd object bWendu object yWendu object tianqi object fengxiang object fengli object aqi int64 aqiInfo object aqiLevel int64 dtype: object

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      獲取Series的str屬性,使用各種字符串處理函數

      df["bWendu"].str

      1

      1

      # 字符串替換函數 df["bWendu"].str.replace("℃", "")

      1

      2

      0 3 1 2 2 2 3 0 4 3 .. 360 -5 361 -3 362 -3 363 -2 364 -2 Name: bWendu, Length: 365, dtype: object

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      Pandas中字符串處理

      12

      # 判斷是不是數字 df["bWendu"].str.isnumeric()

      1

      2

      0 False 1 False 2 False 3 False 4 False ... 360 False 361 False 362 False 363 False 364 False Name: bWendu, Length: 365, dtype: bool

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      df["aqi"].str.len()

      1

      使用str的startswith、contains等得到bool的Series可以做條件查詢

      condition = df["ymd"].str.startswith("2018-03")

      1

      condition

      1

      0 False 1 False 2 False 3 False 4 False ... 360 False 361 False 362 False 363 False 364 False Name: ymd, Length: 365, dtype: bool

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      df[condition].head()

      1

      需要多次str處理的鏈式操作

      怎樣提取201803這樣的數字月份?

      1、先將日期2018-03-31替換成20180331的形式

      2、提取月份字符串201803

      df["ymd"].str.replace("-", "")

      1

      0 20180101 1 20180102 2 20180103 3 20180104 4 20180105 ... 360 20181227 361 20181228 362 20181229 363 20181230 364 20181231 Name: ymd, Length: 365, dtype: object

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      # 每次調用函數,都返回一個新Series df["ymd"].str.replace("-", "").slice(0, 6)

      1

      2

      使用正則表達式的處理

      # 添加新列 def get_nianyueri(x): year,month,day = x["ymd"].split("-") return f"{year}年{month}月{day}日" df["中文日期"] = df.apply(get_nianyueri, axis=1)

      1

      2

      3

      4

      5

      df["中文日期"]

      1

      0 2018年01月01日 1 2018年01月02日 2 2018年01月03日 3 2018年01月04日 4 2018年01月05日 ... 360 2018年12月27日 361 2018年12月28日 362 2018年12月29日 363 2018年12月30日 364 2018年12月31日 Name: 中文日期, Length: 365, dtype: object

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      問題:怎樣將“2018年12月31日”中的年、月、日三個中文字符去除?

      # 方法1:鏈式replace df["中文日期"].str.replace("年", "").str.replace("月","").str.replace("日", "")

      1

      2

      0 20180101 1 20180102 2 20180103 3 20180104 4 20180105 ... 360 20181227 361 20181228 362 20181229 363 20181230 364 20181231 Name: 中文日期, Length: 365, dtype: object

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      Series.str默認就開啟了正則表達式模式

      # 方法2:正則表達式替換 df["中文日期"].str.replace("[年月日]", "")

      1

      2

      0 20180101 1 20180102 2 20180103 3 20180104 4 20180105 ... 360 20181227 361 20181228 362 20181229 363 20181230 364 20181231 Name: 中文日期, Length: 365, dtype: object

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      正則表達式

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:淺談Ajax跨域及其JSONP簡單實現
      下一篇:Android RecyclerView使用入門
      相關文章
      亚洲中文字幕AV在天堂| 亚洲国产成人久久99精品| 亚洲日韩av无码中文| 亚洲欧洲久久精品| 亚洲色四在线视频观看| 亚洲av永久无码精品古装片| 国产中文在线亚洲精品官网| 国产亚洲大尺度无码无码专线| 亚洲国产日韩在线观频| 亚洲乱码中文字幕手机在线| 亚洲性久久久影院| 亚洲色精品aⅴ一区区三区| 亚洲综合AV在线在线播放| 国产自偷亚洲精品页65页| 在线亚洲97se亚洲综合在线| 亚洲一区无码中文字幕 | 国产亚洲成人久久| 国产亚洲欧洲Aⅴ综合一区| 中文字幕第一页亚洲| 国产亚洲一区二区手机在线观看 | 亚洲精品无码永久中文字幕| 亚洲精品无码乱码成人| 亚洲国产综合精品中文第一区| 久久亚洲私人国产精品vA| 亚洲冬月枫中文字幕在线看| 亚洲自国产拍揄拍| 亚洲综合在线一区二区三区| 亚洲av乱码中文一区二区三区| 相泽南亚洲一区二区在线播放| 亚洲AV成人精品日韩一区18p| 亚洲午夜av影院| 国产亚洲婷婷香蕉久久精品| 亚洲AV无码国产丝袜在线观看| 亚洲黄色免费观看| 在线综合亚洲中文精品| 亚洲国产日韩a在线播放| 亚洲精品国产综合久久一线| 国产亚洲精品国产| 亚洲婷婷在线视频| 亚洲JLZZJLZZ少妇| 久久久久亚洲爆乳少妇无 |