dataframe中分行

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章