如何将列表中的前三个元素设置为列,其余元素设置为行-Python

如何将列表中的前三个元素设置为列,其余元素设置为行-Python,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,我有上面的dataframe,我想按如下方式拆分Detail列: 在Python中如何实现这一点 感谢您的帮助。自定义功能 我使用了np.重塑,因为我已经习惯了。然而,这可以完成同样的事情 def process_details(details): cols, *data = np.reshape(details, (-1, 3)) return pd.DataFrame(data, columns=cols) 肩并肩 因为列名不匹配 def process_details

我有上面的dataframe,我想按如下方式拆分Detail列:

在Python中如何实现这一点

感谢您的帮助。

自定义功能 我使用了
np.重塑
,因为我已经习惯了。然而,这可以完成同样的事情

def process_details(details):
    cols, *data = np.reshape(details, (-1, 3))
    return pd.DataFrame(data, columns=cols)

肩并肩 因为列名不匹配

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, 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