如何在数据框中合并具有相同名称的多个列

时间:2020-08-03 14:19:41

标签: python pandas

我具有以下数据框,如下所示:

df = pd.DataFrame({'Field':'FAPERF',
               'Form':'LIVERID',
               'Folder':'ALL',
               'Logline':'9',
               'Data':'Yes',
               'Data':'Blank',
               'Data':'No',
               'Logline':'10'}) '''

我需要数据框:

df = pd.DataFrame({'Field':['FAPERF','FAPERF'],
               'Form':['LIVERID','LIVERID'],
               'Folder':['ALL','ALL'],
               'Logline':['9','10'],
               'Data':['Yes','Blank','No']}) '''

我尝试使用下面的代码,但无法获得所需的输出。

res3.set_index(res3.groupby(level=0).cumcount(), append=True['Data'].unstack(0)

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:0)

我相信您最好的选择是创建多个具有相同列名的数据帧(示例3 df,其列名:“ Data”),然后简单地对数据帧执行concat函数:

df1 = pd.DataFrame({'Field':'FAPERF',
           'Form':'LIVERID',
           'Folder':'ALL',
           'Logline':'9',
           'Data':'Yes'}

 df2 = pd.DataFrame({
           'Data':'No',
           'Logline':'10'})

 df3 = pd.DataFrame({'Data':'Blank'})



frames = [df1, df2, df3]
result = pd.concat(frames)

答案 1 :(得分:0)

您只需要添加到列表中,即可在其中为每一行指定日志行和data_type。

import pandas as pd
import numpy as np

list_df = []

data_type_list = ["yes","no","Blank"]
logline_type = ["9","10",'10']


for x in range (len(data_type_list)):

    new_dict = { 'Field':['FAPERF'], 'Form':['LIVERID'],'Folder':['ALL'],"Data" : [data_type_list[x]], "Logline" : [logline_type[x]]}
    df = pd.DataFrame(new_dict)
    list_df.append(df)

new_df = pd.concat(list_df)


print(new_df)