Python Pandas-在for循环中附加具有不同列的数据帧

Python Pandas-在for循环中附加具有不同列的数据帧,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我一直在努力用不同的列添加多个数据帧,非常感谢您对这个问题的帮助 我的原始数据集如下所示 df1 = height 10 color 25 weight 3 speed 33 df2 = height 51 color 25 weight 30 speed 33 df3 = height 51 color 25 speed 30 我调用transform\u cs

我一直在努力用不同的
列添加多个
数据帧
,非常感谢您对这个问题的帮助

我的原始数据集如下所示

 df1 = height 10
       color  25
       weight 3
       speed  33

 df2 = height 51
       color  25
       weight 30
       speed  33

 df3 = height 51
       color  25
       speed 30
我调用
transform\u csv\u data(csv\u data,row)
函数,首先在最后一行添加
name
。然后我将
transpose
并将
name
移动到每个
DataFrame
的最后一列,使每个
DataFrame
在追加之前(但在将最后一列移到前面之前)看起来如下

问题是用不同数量的
列添加
数据帧
,每个
数据帧
包含两行,包括
标题
数据

transform\u csv\u data
helper函数的代码如下所示

def transform_csv_data(self, csv_data, row):
    df = pd.DataFrame(list(csv_data))

    df = df.iloc[:, [0, -2]]  # all rows with first and second last column
    df.loc[len(df)] = ['name', row]

    df = df.transpose()

    cols = df.columns.values.tolist() # this returns index of each column
    cols.insert(0, cols.pop(-1))  # move last column to front
    df = df.reindex(columns=cols)

    return df
def aggregate_data(self, output_data_file_path):
    df_output = pd.DataFrame()
    rows = ['Joe', 'Bob', 'Chris']

    for index, row in enumerate(rows):

        csv_data = self.read_csv_url(row)
        df = self.transform_csv_data(csv_data, row)

        # ignore header unless first set of data is being processed
        if index != 0 or append:
            df = df[1:]

        df_output = df_output.append(df)
        df_output.to_csv(output_data_file_path, index=False, header=False, mode='a+')
我添加数据帧的主要功能如下所示

def transform_csv_data(self, csv_data, row):
    df = pd.DataFrame(list(csv_data))

    df = df.iloc[:, [0, -2]]  # all rows with first and second last column
    df.loc[len(df)] = ['name', row]

    df = df.transpose()

    cols = df.columns.values.tolist() # this returns index of each column
    cols.insert(0, cols.pop(-1))  # move last column to front
    df = df.reindex(columns=cols)

    return df
def aggregate_data(self, output_data_file_path):
    df_output = pd.DataFrame()
    rows = ['Joe', 'Bob', 'Chris']

    for index, row in enumerate(rows):

        csv_data = self.read_csv_url(row)
        df = self.transform_csv_data(csv_data, row)

        # ignore header unless first set of data is being processed
        if index != 0 or append:
            df = df[1:]

        df_output = df_output.append(df)
        df_output.to_csv(output_data_file_path, index=False, header=False, mode='a+')
我希望最后附加的
DatFrame
如下所示,但当
name
列返回到
列的末尾时,格式会变得奇怪

final = 
 name     height    color   weight  speed
 Joe      10        25      3       33         
 Bob      51        25      30      33      
 Chris    51        25      nan     30      
如何正确地附加所有
数据帧
,以便将
数据
附加到其相应的

我尝试过添加
concat
merge
df_output=df_output.append(df_行)[df_output.columns.tolist()]
,但到目前为止没有成功

还有我想保留的重复列

非常感谢您的帮助

df1=pd.read\u csv('x',index\u col=[0],header=[0,1])。。;pd.concat([df1,df2,df3],轴=1)