dataframe中對某一個cell進行分行
在工作中遇到類似下面的數據:
index names
0 延\t誕\t蜒
1 奄\t掩\t淹\t俺
2 彥\t顏\t諺
3 央\t秧\t映\t殃
4 揚\t楊\t湯\t場\t腸
任務:需要對每個cell進行分行,即每個字是1行。
處理思路:通過pandas讀取爲dataframe,通過dataframe的處理實現最終分行。
col=‘name’ # 目標列名
part1_edit['id'] = part_edit.index
part1_edit1[col].apply(lambda x:x.split('\t'))\ # 將cell值轉成list列表
.apply(pd.Series)\ # 應用pd.Series方法,將list轉換成series展開
.merge(part1_edit1, left_index=True, right_index=True)\ # 合併原dataframe
.drop([col], axis=1)\ # 去除原dataframe用於分行的列
.melt(['id'], value_name = "origin")\ # 根據‘id’名稱展開
.dropna(subset=['origin'])\ # 空值處理
.drop(['variable'], axis=1) # 列刪除
如果有更好的方法,歡迎補充。
參考:
https://www.mikulskibartosz.name/how-to-split-a-list-inside-a-dataframe-cell-into-rows-in-pandas/