我是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
我真的希望我的文件如下所示,但我不确定从这里开始。感谢您的提前帮助!
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
答案 0 :(得分:0)
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)
答案 1 :(得分:0)
建立Chris ...
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
或将索引合并到索引
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