Разделение значения в строке на несколько столбцов - PullRequest
0 голосов
/ 04 августа 2020

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

artist_trackname,year,month,day,hour,minute
'Sonic Species & Volcano - What Is Life\n',2020,8,5,0,25

Я хочу достичь следующего:

artist,trackname,year,month,day,hour,minute
'Sonic Species & Volcano, What Is Life\n',2020,8,5,0,25

Может ли кто-нибудь помочь мне сделать это в python?

Ответы [ 2 ]

0 голосов
/ 04 августа 2020
• 1000 1006 *
df = pd.read_csv(r"./filename.csv")

df.head()


artist_trackname    year    month   day hour    minute
0   'Sonic Species & Volcano - What Is Life\n'  2020    8   5   0   25

Разделите элемент на два столбца вне '-':

df[['artist','trackname']] = df['artist_trackname'].str.split(" - ", n = 1, expand = True)

Отбросьте старый столбец:

df.drop(columns=["artist_trackname"], inplace=True)

Измените порядок столбцов на желаемый формат:

df[['artist','trackname','year','month','day','hour','minute']]

df.head()

    artist  trackname   year    month   day hour    minute
0   'Sonic Species & Volcano    What Is Life\n' 2020    8   5   0   25

Обратная запись в CSV:

df.to_csv(r"/path/to/filename.csv")
0 голосов
/ 04 августа 2020

Если эти поля всегда разделяются дефисом, вы можете просто использовать терминал python для чтения файла, заменить «-» на «,» и все готово. Вот пример, предполагающий, что ваш CSV-файл называется test.csv:

>>> with open('test.csv', 'r') as f:
...     lines = f.readlines()
... 
>>> lines
['artist_trackname,year,month,day,hour,minute\n', "'Sonic Species & Volcano - What Is Life\\n',2020,8,5,0,25\n"]
>>> write_lines = [line.replace(" - ", ",") for line in lines]
>>> with open('test.csv', 'w') as f:
...     f.writelines(write_lines)
... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...