系統(tǒng):Windows 7
語(yǔ)言版本:Anaconda3-4.3.0.1-Windows-x86_64
編輯器:pycharm-community-2016.3.2
pandas:0.19.2
- 這個(gè)系列講講Python的科學(xué)計(jì)算版塊
- 今天講講pandas模塊:對(duì)列的每一個(gè)元素進(jìn)行同樣的字符串操作
- 今天講其中的3個(gè)操作:切片,字符串替換呢蔫,字符串連接
Part 1:目標(biāo)
- 已知Df某列都是字符串,每一個(gè)字符串都有一個(gè)文件與其對(duì)應(yīng)限次,目標(biāo)在于獲取每一個(gè)文件的名稱
- 存在以下規(guī)律:
- 字符串的最后一個(gè)字符是D或者F
- 其中D表示該字符串是一個(gè)txt文本文件的名稱
- 其中F表示該字符串是一個(gè)pdf文本文件的名稱
- 這些文件的名稱最終組成是:FINAL_列元素.文件類(lèi)型
- 實(shí)現(xiàn)方法:
- 提取該列每個(gè)元素的最后一位字符
- 根據(jù)規(guī)則進(jìn)行替換惩坑,獲取文件類(lèi)型
- 字符串連接,加上常量 FINAL_ 和 .
Part 2:代碼
import pandas as pd
dict_1 = {"C1": ["P1-CD", "P2-EF", "P3-BD", "P4-GF", "P5-HD", "P6-LF"],
"C2": [0.5, 0.8, 1.0, 5, 6, 2]}
df_1 = pd.DataFrame(dict_1, columns=["C1", "C2"])
print("初始DF:\n", df_1)
print("\n")
df_1["flag"] = df_1["C1"].str[-1:]
print("列每個(gè)元素切片:\n", df_1)
print("\n")
df_1["newFlag"] = df_1["flag"].replace("D", "txt").replace("F", "pdf")
print("列每個(gè)元素字符替換:\n", df_1)
print("\n")
df_1["FINAL"] = "FINAL_" + df_1["C1"] + "." + df_1["newFlag"]
print("不同列每個(gè)元素連接:\n", df_1)
代碼截圖
執(zhí)行結(jié)果
Part 3:部分代碼解讀
-
df_1["C1"].str[-1:]
,將C1列每個(gè)元素字符串化挽放,并對(duì)其分別進(jìn)行切片操作,其實(shí)就是將切片操作分別作用于每個(gè)元素
2.df_1["flag"].replace("D", "txt").replace("F", "pdf")
蔓纠,執(zhí)行字符串替換作用辑畦,將代碼改為df_1["newFlag"] = df_1["flag"].str.replace("D", "txt").replace("F", "pdf")
,也就是按照上一條的邏輯腿倚,將每一個(gè)元素字符串化航闺,執(zhí)行效果是一樣的
3.df_1["FINAL"] = "FINAL_" + df_1["C1"] + "." + df_1["newFlag"]
,字符串連接猴誊。效果看起來(lái)像是潦刃,先將標(biāo)量 FINAL_ 和 . 向量化,然后執(zhí)行元素間分別連接
- 綜上懈叹,整體效果是按列整體進(jìn)行字符串操作乖杠,無(wú)需遍歷循環(huán),大大減少代碼量
本文為原創(chuàng)作品澄成,歡迎分享朋友圈
長(zhǎng)按圖片識(shí)別二維碼胧洒,關(guān)注本公眾號(hào)
Python 優(yōu)雅 帥氣