簡體   English   中英

在Pandas數據框中將列轉換為行

[英]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.meltpd.pivotpd.pivot_table但是只有錯誤,並且此錯誤顯示No numeric types to aggregate

任何想法如何做到這一點?

使用cumcount對新列的名稱,以MultiIndexset_index和重塑unstack

df = df.set_index(['ID',df.groupby('ID').cumcount()])['Product_Name'].unstack()

或通過構造器創建Serieslist和新的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM