Исправить повторяющиеся строки при разбиении CSV с помощью pandas - PullRequest
1 голос
/ 12 марта 2020

Я довольно новичок в Python и не могу найти именно то, что мне нужно при поиске. Я попробовал несколько случайных вещей, которые я видел здесь, с .merge и сбросом дубликатов, но у меня ничего не работает.

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

input.csv

Dealer  Stock#  VIN                 Images      
123      456    1HGCM72624A009649   site.com/001.jpg,site.com/002.jpg,site.com/-003.jpg
123      789    JTHCL5EF9F5072453   site.com/100.jpg,site.com/102.jpg   

Когда я использую следующий код, я получаю файл output.csv под кодом.

Код

 df = pd.read_csv("input_file.csv", index_col=0, sep='\t', encoding='windows-1252')

 df2 = df['Images'].str.split(',',expand=True)    
 df2.columns = ['Images{}'.format(x+1) for x in df2.columns]

 df = df.join(df2)
 df = df.drop(['Images'], axis=1)

 df.to_csv('output_file.csv')
 print ("The file 'output_file.csv' was created.")

output.csv

Dealer  Stock#  VIN                 Images1           Images2            Images3
123      456    1HGCM72624A009649   site.com/001jpg   site.com/002.jpg   site.com/-003.jpg
123      456    1HGCM72624A009649   site.com/100.jpg  site.com/102.jpg  
123      789    JTHCL5EF9F5072453   site.com/001.jpg  site.com/002.jpg   site.com/-003.jpg
123      789    JTHCL5EF9F5072453   site.com/100.jpg  site.com/102.jpg  

Я действительно хочу, чтобы мой файл выглядел так, как показано ниже, но Я не уверен, где go отсюда. Заранее спасибо за помощь!

Dealer  Stock#  VIN                 Images1           Images2            Images3
123      456    1HGCM72624A009649   site.com/001jpg   site.com/002.jpg   site.com/-003.jpg
123      789    JTHCL5EF9F5072453   site.com/100.jpg  site.com/102.jpg  

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Строим из Криса ...

df_new = pd.concat([df[['Dealer', 'Stock#', 'VIN']],
                df['Images'].str.split(',',expand=True).rename(columns = lambda x: 
                f"Images{(x+1)}")],
               axis=1).fillna('')
df_new

ИЛИ pd.merge по индексу

df_new = pd.merge(df[['Dealer', 'Stock#', 'VIN']],
              df['Images'].str.split(',', expand=True).rename(columns = lambda x: f"Images{(x+1)}"),
              how='left',
              left_index=True,
              right_index=True).fillna('')
df_new
0 голосов
/ 12 марта 2020
df = pd.concat([df,df['Images'].str.split(',',expand=True)], axis=1)
df.columns = ['Dealer','Stock#','VIN','Images','Images1','Images2','Images3']
df.drop(columns=['Images'], inplace=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...