Объединение двух CSV-файлов - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть два CSV-файла, как показано ниже.Это похоже на данные пары ключ-значение.Если я зачитаю это во фрейм данных pandas, он будет выглядеть как первый столбец как «Многофункциональное рулевое колесо Да».Но на самом деле это необработанные данные, которые не имеют определенных столбцов.

Multi-function Steering Wheel   Yes
Power Adjustable Exterior Rear View Mirror  Yes
Touch Screen    Yes
Automatic Climate Control   Yes
Anti Lock Braking System    Yes
Alloy Wheels    Yes
Fog Lights - Front  Yes
Fog Lights - Rear   Yes
.................

Engine Type T-Jet Petrol Engine
Engine Description  1.4-litre 123.2bhp 16V T-Jet Petrol Engine
Engine Displacement(cc) 1368
No. of cylinder 4
Maximum Power   123.2bhp@5000rpm
Maximum Torque  208Nm@2000-3500rpm
Valves Per Cylinder 4
Valve Configuration DOHC
Fuel Supply System  MPFI
Bore x Stroke   No
Compression Ratio   No
...........
...........

Если я объединю эти две таблицы, мне нужно получить приведенную ниже таблицу.

Multi-function Steering Wheel   Yes
Power Adjustable Exterior Rear View Mirror  Yes
Touch Screen    Yes
Automatic Climate Control   Yes
Anti Lock Braking System    Yes
Alloy Wheels    Yes
Fog Lights - Front  Yes
Fog Lights - Rear   Yes
Engine Type T-Jet Petrol Engine
Engine Description  1.4-litre 123.2bhp 16V T-Jet Petrol Engine
Engine Displacement(cc) 1368
No. of cylinder 4
Maximum Power   123.2bhp@5000rpm
Maximum Torque  208Nm@2000-3500rpm
Valves Per Cylinder 4
Valve Configuration DOHC
Fuel Supply System  MPFI
Bore x Stroke   No
Compression Ratio   No

У меня более 10 файлов CSV таким же образом.Мне нужно добавить эти 10 файлов в один лист, как указано выше.Я попытался с конкатенацией, но это не так, как я ожидал.Может кто-нибудь объяснить, как это сделать в пандах.Любая помощь будет принята с благодарностью.Спасибо.

1 Ответ

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

Столбцы в формате CSV (значения, разделенные запятыми) должны быть разделены запятыми (,), а не пробелами. Если нет допустимых разделителей (запятых), Pandas распознает всю строку как один столбец.

Вы можете использовать модуль re (regex), чтобы заменить эти пробелы на запятые, чтобы сделать правильный текст CSV.

import re
text = """Multi-function Steering Wheel   Yes
Power Adjustable Exterior Rear View Mirror  Yes
Engine Description  1.4-litre 123.2bhp 16V T-Jet Petrol Engine
Engine Displacement(cc) 1368
No. of cylinder 4
Maximum Power   123.2bhp@5000rpm
... ...
"""

# Replaces last white space(s) in each line into comma
p = re.compile(r' +(?=[^ ]+$)', re.MULTILINE)
replaced = re.sub(p, ',', text)
print(replaced)

Это даст вам вывод, как

Multi-function Steering Wheel,Yes
Power Adjustable Exterior Rear View Mirror,Yes
Engine Description  1.4-litre 123.2bhp 16V T-Jet Petrol,Engine
Engine Displacement(cc),1368
No. of cylinder,4
Maximum Power,123.2bhp@5000rpm
...,...

Обратите внимание, что если вы намереваетесь разделить строку, например Engine Description 1.4-litre 123.2bhp 16V T-Jet Petrol Engine, на Engine Description,1.4-litre 123.2bhp 16V T-Jet Petrol Engines, эти строки следует редактировать вручную, поскольку приведенный выше код просто механически заменит последний пробел в каждой строке.

Вместо использования Python вы можете просто использовать текстовые редакторы, такие как VSCode (см. https://code.visualstudio.com/docs/editor/codebasics#_search-and-replace)

...