[英]Convert column into rows in Pandas dataframe
我有兩列的Pandas數據框。 一個是唯一標識符,第二個是附加到此唯一標識符的產品名稱。 我有重復的標識符和產品名稱值。 我想將一列產品名稱轉換為幾列而不重復標識符。 也許我需要通過標識符來匯總產品名稱。
我的數據框看起來像:
ID Product_Name
100 Apple
100 Banana
200 Cherries
200 Apricots
200 Apple
300 Avocados
我想要這樣的數據框:
ID
100 Apple Banana
200 Cherries Apricots Apple
300 Avocados
每個標識符中的每個產品都必須在單獨的列中
我嘗試了pd.melt
, pd.pivot
, pd.pivot_table
但是只有錯誤,並且此錯誤顯示No numeric types to aggregate
任何想法如何做到這一點?
使用cumcount
對新列的名稱,以MultiIndex
由set_index
和重塑unstack
:
df = df.set_index(['ID',df.groupby('ID').cumcount()])['Product_Name'].unstack()
或通過構造器創建Series
的list
和新的DataFrame
:
s = df.groupby('ID')['Product_Name'].apply(list)
df = pd.DataFrame(s.values.tolist(), index=s.index)
print (df)
0 1 2
ID
100 Apple Banana NaN
200 Cherries Apricots Apple
300 Avocados NaN NaN
但是如果要2列DataFrame
:
df1 = df.groupby('ID')['Product_Name'].apply(' '.join).reset_index(name='new')
print (df1)
ID new
0 100 Apple Banana
1 200 Cherries Apricots Apple
2 300 Avocados
使用樞軸功能樞軸它可以完成所需的操作!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.