Pandas (Dataframes)如何让行共享具有重复列名的Dataframes中的同一列

Pandas (Dataframes)如何让行共享具有重复列名的Dataframes中的同一列,pandas,dataframe,Pandas,Dataframe,当前数据帧: Name Age City Name Age City 0 Andy 18 Ely Laura 18 Ely 1 Joel 39 Odessa Claudia 36 Odessa 2 Terrence 50 Horsens Lilly 51 Horsens Name Age City 0 Andy 18 Ely

当前数据帧:

    Name       Age  City    Name     Age  City
0   Andy       18   Ely     Laura    18   Ely
1   Joel       39   Odessa  Claudia  36   Odessa
2   Terrence   50   Horsens Lilly    51   Horsens
    Name       Age  City
0   Andy       18   Ely
    Laura      18   Ely
1   Joel       39   Odessa
    Claudia    36   Odessa
2   Terrence   50   Horsens
    Lilly      51   Horsens
所需数据帧:

    Name       Age  City    Name     Age  City
0   Andy       18   Ely     Laura    18   Ely
1   Joel       39   Odessa  Claudia  36   Odessa
2   Terrence   50   Horsens Lilly    51   Horsens
    Name       Age  City
0   Andy       18   Ely
    Laura      18   Ely
1   Joel       39   Odessa
    Claudia    36   Odessa
2   Terrence   50   Horsens
    Lilly      51   Horsens

我想你得用groupby什么的?这似乎很容易做到,而且很可能是,但我刚刚开始,我无法理解。如果您的数据帧总是具有相同的长度,我们可以使用一个简单的函数来连接数据帧

我们可以使用
np.array\u split
方法将数据帧分块,方法是传入目标列长度,在本例中为3

import numpy as np

def concat_dataframe(dataframe, original_column_length):
    """takes a dataframe and a length of original columns then returns a concenated dataframe.
    dataframe : your dataframe
    column_length : original columns number i.e City, Age, Name
    """
    col_len = len(dataframe.columns) / original_column_length
    return pd.DataFrame(
        np.concatenate([dataframe[col].values for col in np.array_split(df.columns, col_len)]),
        columns = dataframe.iloc[:,:original_column_length].columns.tolist(),
        index = df.index.tolist() * int(col_len)
    ).sort_index()
测试。 使用
Stack
cumcount
另一种方法是创建psuedo索引,以从重复索引(列)重塑数据帧


熊猫不会自动重命名列名吗?你有
Name,Name.1,Name.2等吗?它在最初的df上有,有两列名为“Name-Age-City”和“Name-Age-City.1”,后来我把它们分成了6列,不得不这样留下它们,因为这是练习的要求(来自练习)。但我的重复列不是。1,他们的名字完全一样。我不知道这是否会影响你在那里的工作。此外,我还希望像我在OP上所展示的那样,将nº索引保留为双行。@kalkstein您可以手动设置索引,另一种方法是使用
stack
名称无关紧要。stack不起作用,它会破坏整个数据帧。我需要有默认的熊猫索引。编辑:我看到你已经更新了答案,似乎单凭堆栈本身是不够的。我不知道还有什么其他函数可以使用。@kalkstein如果您的示例不能代表您的数据帧,请另外阅读第一个函数已被修改以添加到您的默认索引中。是否要我更新我的帖子并粘贴引导当前数据帧的代码?