拆分列是`pandas`中常用的一種數據操作,它可以將一個包含多個值的列按照指定的規則拆分成多個新列,方便進行後續的分析和處理。拆分列的使用場景比較廣泛,以下是一些常見的應用場景: 1. 處理日期數據:在日期數據中,經常會將年、月、日等信息合併成一列,通過拆分列可以將其拆分成多個新列,方便進行時間序 ...
拆分列是pandas
中常用的一種數據操作,它可以將一個包含多個值的列按照指定的規則拆分成多個新列,方便進行後續的分析和處理。
拆分列的使用場景比較廣泛,以下是一些常見的應用場景:
- 處理日期數據:在日期數據中,經常會將年、月、日等信息合併成一列,通過拆分列可以將其拆分成多個新列,方便進行時間序列分析。
- 處理地址數據:類似於日期數據,在地址數據中也經常會將省、市、區等信息合併成一列,通過拆分列可以將其拆分成多個新列,有利於進行地理位置分析。
- 處理姓名數據:在一些數據集中,姓名通常會以“姓”、“名”兩列呈現,通過拆分列可以將其分別提取出來,方便進行人口統計學分析。
- 處理文本數據:在一些文本數據中,可能存在多個關鍵詞同時出現的情況,通過拆分列可以將這些關鍵詞拆分成多個新列,方便進行文本分類或聚類分析。
本篇簡要介紹下pandas
拆分列的常用方法。
1. 拆出列中部分信息
如下測試數據:
import pandas as pd
df = pd.DataFrame(
{
"姓名": ["張 三", "李 四", "王 五"],
"地址": [
"江蘇省,南京市,建鄴區",
"浙江省,杭州市,餘杭區",
"安徽省,合肥市,廬陽區",
],
}
)
df
提取姓和城市信息:
df["城市"] = df["地址"].str.split(",",
expand=True)[1]
df["姓"] = df["姓名"].str.split(" ",
expand=True)[0]
df
註意要加上 expand=True
參數。
因為:
expand=False
:split
後的值是Series
expand=True
:split
後的值是DataFrame
2. 拆分成多列
拆分成多列有兩種方式:
第一種:
df[["省", "市", "區"]] =
df["地址"].str.split(",", expand=True)
df
第二種:這種方式不需要設置 expand=True
df["省"], df["市"], df["區"] =
zip(*df["地址"].str.split(","))
df
3. 使用正則拆分
除了直接按照字元來split
列中的數據,也可以用正則表達式來split
。
比如如下的場景,需要對客戶的手機號進行保密,可以通過正則表達式來截斷手機號,只保留最後四位。
df = pd.DataFrame(
{
"單號": ["0001", "0002", "0003"],
"手機號": [
"13900000001",
"18922233344",
"15955566677",
],
}
)
df["截斷手機號"] = df["手機號"].str.split(
r"\d{7}",
expand=True,
regex=True,
)[1]
df
通過正則表達式,可以更加靈活的拆分列的數據。