Python читает данные из csv с использованием пробела sep, кроме первого столбца

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

1
задан Alex T 18 January 2019 в 13:16
поделиться

2 ответа

Используйте 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
0
ответ дан jezrael 18 January 2019 в 13:16
поделиться

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

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
ответ дан Sumanth 18 January 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: