日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pandas 将一行拆分为多行,将多行合并为一行

發布時間:2023/12/29 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas 将一行拆分为多行,将多行合并为一行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求描述

  • 在今天的數據需求,現在要統計各個場景下的類目種類數,并列出對應都有哪些類目。
  • ?現在面臨的問題是:每個客戶的應用場景不同,購買的類目也有多種。

🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞

數據形式

數據處理前:

?最終統計的結果:

拆開來看,分兩大塊一部分是統計最適場景的類目數一部分是統計最適場景的類目組合?

解決思路:

1、首先將原始數據中用到的列提取出來,一行拆分為多行

2、對原始數據進行去重處理,得到最新的數據

  • 統計最適場景的類目數

? ? ? ?使用pandas中的pivot_table()。

  • 統計最適場景的類目組合

? ? ? ? 將各個場景下的,類目進行拼接。

具體實現代碼:

1、首先將原始數據中用到的列提取出來,一行拆分為多行

data2_1 =data2[['類目','最適場景']] data2_1['類目1'] = data2_1['類目'] data2_1 = data2_1.drop(['類目1'], axis=1).join(data2_1['類目1'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('類目_new')) print(data2_1.head())

2、便于后面的統計,對原始數據進行去重處理,得到最新的數據

data2_1 =data2_1[['最適場景','類目_new']] data2_1.drop_duplicates(inplace =True) #對數據進行去重
  • 統計最適場景的類目數
kind_1 =pd.pivot_table(data2_1,values =['類目_new'],index =['最適場景'],aggfunc ={ '類目_new':lambda x :len(x.dropna().unique())},fill_value =0).reset_index(drop=False).rename(columns ={'類目_new':'類目數'}) print(kind_1.head())

  • 統計最適場景的類目組合
# 創建函數,用于聚合場景購買品類的集合 def fun_join(x):return ','.join(x.values)kind_2 =data2_1.groupby(by = '最適場景').agg(fun_join).reset_index().rename(columns ={'類目_new':'類目組合'}) #獲得最近一次購買產品的組合kind =pd.merge(kind_1,kind_2,on =['最適場景'],how ='inner') print(kind.head())

?至此,已經完成了這個數據需求。

總結一下:

在這個數據需求里面最重要的兩點,一個是數據的拆分;一個是數據的合并。

總結

以上是生活随笔為你收集整理的pandas 将一行拆分为多行,将多行合并为一行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。