我有一個包含 31 列的 DataFrame,其中包含 3 個類別“Classic”、“Premium”和“Luxe”里面可以列出的類別。
由于我是新手,為了更清楚,我只能發布圖片鏈接: 這是我所擁有的以及我想做的
這是我到目前為止所嘗試的:
假設我們使用這個 DataFrame
import pandas as pd
import numpy as np
d = {'Name': ["Alban","Benan","Conor","Dino","Egor","Fatima" ],'Virtual visits': ["Classique", "Classique","","" ,"Premium","Premium"], 'Cars' :["","" ,"Luxe","Luxe","Luxe", "Premium"],'Portraits' :["","" ,"Classique","Classique","Luxe", "Premium"],'Animals' :["Premium","Luxe" ,"","","Luxe", ""]}
df = pd.DataFrame(data=d)
df
Name Virtual visits Cars Portraits Animals
0 Alban Classique Premium
1 Benan Classique Luxe
2 Conor Luxe Classique
3 Dino Luxe Classique
4 Egor Premium Luxe Luxe Luxe
5 Fatima Premium Premium Premium
使用 melt 看起來很有希望,所以我這樣做了,并且使用了 groupBy:
df = df.melt(id_vars=["Name"])
df.groupby(by=["Name"]).sum()
Name variable value
Alban Virtual visitsCarsPortraitsAnimals ClassiquePremium
Benan Virtual visitsCarsPortraitsAnimals ClassiqueLuxe
Conor Virtual visitsCarsPortraitsAnimals LuxeClassique
Dino Virtual visitsCarsPortraitsAnimals LuxeClassique
Egor Virtual visitsCarsPortraitsAnimals PremiumLuxeLuxeLuxe
Fatima Virtual visitsCarsPortraitsAnimals PremiumPremiumPremium
因此,“變數”列由所有列名組成,這還不錯,但不是將單個字串相互添加,我想要一個串列,而不是列變數和值,我需要有 3 列,“Premium”、“Classque”、“Luxe”,并且在每個列中都有相關的類別串列出現。
謝謝你的幫助。
uj5u.com熱心網友回復:
你是對的融化。之后,您需要一個資料透視表:
out = df.replace('',np.nan).melt("Name")\
.pivot_table(index="Name",columns="value",values="variable",aggfunc=','.join)\
.rename_axis(None,axis=1).reset_index()
print(out)
Name Classique Luxe \
0 Alban Virtual visits NaN
1 Benan Virtual visits Animals
2 Conor Portraits Cars
3 Dino Portraits Cars
4 Egor NaN Cars,Portraits,Animals
5 Fatima NaN NaN
Premium
0 Animals
1 NaN
2 NaN
3 NaN
4 Virtual visits
5 Virtual visits,Cars,Portraits
uj5u.com熱心網友回復:
df = df.melt(id_vars=["Name"]).groupby(['Name', 'value']).apply(lambda x: list(x['variable'])).reset_index().pivot(index = 'Name', columns = 'value')
df.columns = df.columns.get_level_values(1)
df = df.drop(columns =['']) # in case you have empty value represented by ''
value Classique Luxe Premium
Name
Alban [Virtual visits] NaN [Animals]
Benan [Virtual visits] [Animals] NaN
Conor [Portraits] [Cars] NaN
Dino [Portraits] [Cars] NaN
Egor NaN [Cars, Portraits, Animals] [Virtual visits]
Fatima NaN NaN [Virtual visits, Cars, Portraits]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448855.html
