在现有列之间插入空列

2024-04-28 11:02:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用熊猫制作一个csv转换器。目前,它读取一个文件(export.csv)并写入一个新文件(google.csv)。我从export.csv文件中选择了列,但对于新文件,我想插入一些新列。我想在名为Date的数据框开始处插入一个,并为每行输入相同的值(11-23-20),我想在ProductUrl和RetailPrice之间添加另一个名为Shippinged的值,不带任何值。这是我的密码

import pandas as pd

ed = pd.read_csv('export.csv')
df = ed[['ItemID', 'ProductUrl', 'RetailPrice', 'ItemName', 'ItemName', 'ItemPrimaryImageUrl', 'CategoryList', 'Manufacturer', 'GTIN', 'ProductStatus','CategoryList', 'ItemNumber']]
df.columns =['id', 'link', 'price', 'title', 'description','image_link', 'product_type','brand', 'gtin', 'availability', 'google_product_category','mpn'] 
df.to_csv('google.csv')

Tags: 文件csv数据dfdategooglelinkexport
2条回答

要在特定位置插入列,可以使用:

df.insert(loc, column, value)

假设您的数据集如下所示:

>>> df

   ItemID ProductUrl  RetailPrice ItemName
0       1       aUrl          1.0    aItem
1       2       bUrl          2.0    bItem
2       3       cUrl          3.0    cItem

可以使用以下命令将列添加到开头:

df.insert(0, 'Date', pd.Timestamp.now().strftime('%m-%d-%y'))

这将为您提供:

>>> df.insert(0, 'Date', pd.Timestamp.now().strftime('%m-%d-%y'))
>>> df
       Date  ItemID ProductUrl  RetailPrice ItemName
0  11-23-20       1       aUrl          1.0    aItem
1  11-23-20       2       bUrl          2.0    bItem
2  11-23-20       3       cUrl          3.0    cItem

然后可以使用类似的insert语句将列添加到特定位置

您有两个选项:可以搜索要插入的列名,然后插入。或者,如果您已经知道某个位置,则可以插入到该位置

在本例中,您希望在'ProductUrl''RetailPrice'之间插入列。'RetailPrice'的原始位置是3。我们在开头加了一列。所以'RetailPrice'的当前位置是4。因此,可以在位置4插入新列。请记住,列从0开始。因此,您需要在位置3处插入(0=日期,1=项目ID,2=产品URL,3=新列,4=零售价格)

>>> df.insert(3, 'Shippinged', '')
>>> df
       Date  ItemID ProductUrl Shippinged  RetailPrice ItemName
0  11-23-20       1       aUrl                     1.0    aItem
1  11-23-20       2       bUrl                     2.0    bItem
2  11-23-20       3       cUrl                     3.0    cItem

或者,您可以使用columns.get_loc()获取任何列的索引

由于要在'ProductUrl''RetailPrice'之间插入列,因此可以选择搜索'RetailPrice'的位置并在该位置插入

>>> idx = df.columns.get_loc('RetailPrice')
>>> df.insert(idx, 'Shippinged', '')
>>> df
       Date  ItemID ProductUrl Shippinged  RetailPrice ItemName
0  11-23-20       1       aUrl                     1.0    aItem
1  11-23-20       2       bUrl                     2.0    bItem
2  11-23-20       3       cUrl                     3.0    cItem

这将为您提供要写入的新数据帧'google.csv'

使用^{}

df.insert(0, 'Date', pd.Timestamp.now().strftime('%m-%d-%y'))

idx = df.columns.get_loc('ProductUrl')
df.insert(idx+1, 'Shippinged', '')

相关问题 更多 >