Используйте слова в первой строке перед двоеточием для создания заголовков столбцов и удаления из строки для 1-й и всех оставшихся строк - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть файл CSV, который я читаю в кадре данных, а затем хотел бы взять первую строку и использовать каждое слово перед двоеточием в качестве заголовка столбца, а зачеркнуть оставшиеся строки со словом перед толстой кишки.

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

Я пытался повторить, я пытался разбить и объединить строки, но безуспешно.

Ниже приведен пример ввода, а затем необходим вывод:

Input
Date: 2019/03/20    ID: DD0011010   REF: 15987-AA
Date: 2019/03/21    ID: DD0011011   REF: 15987-AA
Date: 2019/03/22    ID: DD0011012   REF: 15687-AA
Date: 2019/03/23    ID: DD0011013   REF: 65987-AA
Date: 2019/03/24    ID: DD0011014   REF: 15990-AB

Expected Output
Date            ID              REF
2019/03/20      DD0011010       15987-AA
2019/03/21      DD0011011       15987-AA
2019/03/22      DD0011012       15687-AA
2019/03/23      DD0011013       65987-AA
2019/03/24      DD0011014       15990-AB

Ответы [ 3 ]

2 голосов
/ 01 апреля 2019

Очевидно, вам просто нужно регулярное выражение и replace

df.replace('[a-zA-Z0-9]*:\s+', '', regex=True)

Выходы

    col1        col2        col3
0   2019/03/20  DD0011010   15987-AA
1   2019/03/21  DD0011011   15987-AA
2   2019/03/22  DD0011012   15687-AA
3   2019/03/23  DD0011013   65987-AA
4   2019/03/24  DD0011014   15990-AB
1 голос
/ 01 апреля 2019

Попробуйте это:

df.applymap(lambda x: re.split(":", str(x))[1])

0 голосов
/ 01 апреля 2019

Вы можете использовать простой разделитель строк для этого

def sep(t_string):
   return t_string.split(" ")

если t_string = 'Date: 2019/03/20'

sep(t_string)[0] = 'Date:'

и

sep(t_string)[1] == '2019/03/20'

и передать эту функцию в столбцы

d_table['column'] = [sep(t)[1] for t in d_table['column'].values]
...