[英]How to make first three elements in a list as columns and the rest as rows - Python
df = pd.DataFrame({'Categotry':['Food','Animal'],
'Detail':[['Name','Color','Sweet?','Bread','Brown','No','Rice','White','No','Sushi','N/A','No'],
['Name','Predator?','Habitat','Tigers','Yes','Forests','Lions','Yes','Savanna','Deers','No','Hardwoods']]})
我怎樣才能在 Python 中做到這一點?
謝謝您的幫助。
def process_details(details):
cols, *data = np.reshape(details, (-1, 3))
return pd.DataFrame(data, columns=cols)
我使用np.reshape
因為我已經習慣了。 然而,這可以完成同樣的事情。
def process_details(details):
cols, *data = zip(*[iter(details)] * 3)
return pd.DataFrame(data, columns=cols)
因為列名不匹配
pd.concat({
cat: process_details(details)
for cat, details in zip(*map(df.get, df))
}, sort=False, axis=1)
Animal Food
Name Predator? Habitat Name Color Sweet?
0 Tigers Yes Forests Bread Brown No
1 Lions Yes Savanna Rice White No
2 Deers No Hardwoods Sushi N/A No
但如果你堅持堆疊它們
pd.concat({
cat: process_details(details)
for cat, details in zip(*map(df.get, df))
}, sort=False)
Name Predator? Habitat Color Sweet?
Animal 0 Tigers Yes Forests NaN NaN
1 Lions Yes Savanna NaN NaN
2 Deers No Hardwoods NaN NaN
Food 0 Bread NaN NaN Brown No
1 Rice NaN NaN White No
2 Sushi NaN NaN N/A No
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.