Как объединить несколько столбцов с одинаковыми именами в фреймворке данных - PullRequest
0 голосов
/ 03 августа 2020

У меня есть следующий фрейм данных, как показано ниже:

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 голосов
/ 05 августа 2020

Вам просто нужно добавить в список, в котором вы указываете logline и 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)
0 голосов
/ 03 августа 2020

Я считаю, что ваш лучший вариант - создать несколько фреймов данных с одним и тем же именем столбца (пример 3 df с именем столбца: «Данные»), а затем просто выполнить функцию 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...