Как разделить строку на имена столбцов с помощью python / panda?

#python #pandas

#python #pandas

Вопрос:

Вы знаете, как решить это на python? Я хотел бы иметь dataframe с данными, расположенными в правильном столбце.

Заранее спасибо!

Вот пример строки из фрейма данных.

«Функции Huidig Майкл Джордан 2015 — настоящее время Директор по маркетингу и косвенным каналам, Ricoh Nederland 2010 — настоящее время Баскетбольный центр, Центр бизнес-экспертизы Loopbaan Майкл Джордан 2012 — 2015 Директор по маркетингу и развитию бизнеса, Ricoh Opleiding Майкл Джордан 1988 — 1992 Маркетинг, Гарвард «

Предпочтительный результат

 type          from     to        function                                   organization           
current       2015     present    Director Marketing amp; Indirect Channels    Ricoh Nederland 
current       2010     present    Owner amp; Consultant                        Basketball Center
old           2012     2015       Director Marketing amp; Business Development Ricoh
school        1988     1992       Marketing                                 Harvard                           
  

Текущий df

 Name             Data
Michael Jordan   ' Huidigefuncties Michael Jordan 2015 - present Director Marketing amp; Indirect Channels, Ricoh Nederland 2010 - present Basketball Center, Center for Business-Expertise Loopbaan Michael Jordan 2012 - 2015 Director Marketing amp; Business Development, Ricoh Opleiding Michael Jordan 1988 - 1992 Marketing , Harvard '
  

Комментарии:

1. Откуда вы берете столбец type ?

2. Huidigefunctie = текущий цикл = старый Opleiding = школа

3. Вы читаете csv с заголовком? у вас многострочный файл?

4. Нет, это не csv. it из beautifulsoup.

5. Вы предоставляете доступ к правильным данным? owner amp; consultant функции нет в строке

Ответ №1:

Ну, это решение, которое я сделал для этой проблемы

 import pandas as pd
beautiful_data = 'Huidigefuncties Michael Jordan 2015 - present Director Marketing amp; Indirect Channels, Ricoh Nederland 2010 - present Basketball Center, Center for Business-Expertise Loopbaan Michael Jordan 2012 - 2015 Director Marketing amp; Business Development, Ricoh Opleiding Michael Jordan 1988 - 1992 Marketing , Harvard'
main_dict = {'type':[], 'from':[], 'to':[], 'function':[], 'organization': []}
data = beautiful_data.split(' ')
i = 0
huidi_index = data.index('Huidigefuncties')
loopbaan_index = data.index('Loopbaan')
ople_index = data.index('Opleiding')
# print(data)
while i < len(data):
    if data[i] == 'Huidigefuncties':
        line = ' '.join(data[i   1: loopbaan_index])
        i = loopbaan_index
        print(line)
        type_data = 'current'
    elif data[i] == 'Loopbaan':
        line = ' '.join(data[i   1: ople_index])
        i = ople_index
        print(line)
        type_data = 'old'
    elif data[i] == 'Opleiding':
        line = ' '.join(data[i 1: ])
        i = len(data)
        print(line)
        type_data = 'school'
    else:
        i  = 1
    data_line = line.split('-')
    if len(data_line) == 2:
        print(type_data)
        main_dict['type'].append(type_data)
        from_data = data_line[0].strip().split(' ')[-1]
        print(from_data)
        main_dict['from'].append(from_data)
        to_data = data_line[1].strip().split(' ')[0]
        print(to_data)
        main_dict['to'].append(to_data)
        function_data = ' '.join(data_line[1].strip().split(' ')[1:-1])[:-1]
        print(function_data)
        main_dict['function'].append(function_data)
        organization_data = data_line[1].split(',')[-1].strip()
        print(organization_data)
        main_dict['organization'].append(organization_data)

    elif len(data_line) > 2:
        j = 0
        while j < len(data_line):
            register_data = data_line[j:j 2]
            if len(register_data) > 1:
                if len(register_data[0].split(' ')) > 1 and len(register_data[1].split(' ')) > 1: 
                    if j == 0:
                        print(register_data)
                        print('----------')
                        print(type_data)
                        main_dict['type'].append(type_data)
                        from_data = register_data[0].strip().split(' ')[-1]
                        print(from_data)
                        main_dict['from'].append(from_data)
                        to_data = register_data[1].strip().split(' ')[0]
                        print(to_data)
                        main_dict['to'].append(to_data)
                        function_org = register_data[1].strip().split(',')
                        function_data = ' '.join(function_org[0].split(' ')[1:])
                        print(function_data)
                        main_dict['function'].append(function_data)
                        org_data = ' '.join(function_org[1].split(' ')[:-1]).strip()
                        print(org_data)
                        main_dict['organization'].append(org_data)
                        print('-----------')
                    else:
                        print('-----------')
                        print(register_data)
                        print(type_data)
                        main_dict['type'].append(type_data)
                        from_data = register_data[0].strip().split(' ')[-1]
                        print(from_data)
                        main_dict['from'].append(from_data)
                        to_data = register_data[1].strip().split(' ')[0]
                        print(to_data)
                        main_dict['to'].append(to_data)
                        function_org = register_data[1].strip().split(',')
                        function_data = ' '.join(function_org[0].split(' ')[1:])
                        print(function_data)
                        main_dict['function'].append(function_data)
                        org_data = ' '.join(function_org[1].split(' ')).strip()
                        print(org_data)
                        main_dict['organization'].append(org_data)
                        print('-----------')
            j  = 1

df = pd.DataFrame(main_dict)
  

Проверено

введите описание изображения здесь