Python читает данные из csv с использованием пробела sep, кроме первого столбца - PullRequest
0 голосов
/ 18 января 2019

Привет, мне интересно, есть ли способ прочитать данные из csv-файла, используя pandas read_csv, чтобы каждая запись разделялась пробелом, кроме первого столбца:

Alabama 400 300 200
New York 400 200 100
Missouri 400 200 50
District of Columbia 450 100 250

Таким образом, будет 4 столбца с первым состоянием.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вы также можете использовать регулярные выражения при разбиении строки.

import regex as re
r = re.compile("([\w\s]+)\s+([\d]+)\s+([\d]+)\s+([\d]+)")
data = r.match('New York 400 200 100')
split_list = [data.group(1),data.group(2),data.group(3),data.group(4)]

Вывод будет: ['New York', '400', '200', '100']

Вы можете просто создать окончательный список списков и записать его в CSV-файл.

0 голосов
/ 18 января 2019

Используйте read_csv с разделителем, отсутствующим в данных, таких как |, а затем str.rsplit с параметром n=3 для разделения на 3 пробела с правой стороны и expand=True для DataFrame:

import pandas as pd

temp=u"""Alabama 400 300 200
New York 400 200 100
Missouri 400 200 50
District of Columbia 450 100 250"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), sep="|", names=['Data'])

print (df)
                               Data
0               Alabama 400 300 200
1              New York 400 200 100
2               Missouri 400 200 50
3  District of Columbia 450 100 250


df = df['Data'].str.rsplit(n=3, expand=True)
print (df)

                      0    1    2    3
0               Alabama  400  300  200
1              New York  400  200  100
2              Missouri  400  200   50
3  District of Columbia  450  100  250
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...