我遍历目录中的csv文件,并使用pandas读取它们。
对于每个csv文件,我有一个类别和一个市场。
然后,我需要从数据库中获取此csv文件有效的类别ID和市场ID。
finalDf是包含所有csv文件中所有产品的数据框架,我需要将其与当前csv的数据合并。
当前CSV的产品列表可使用以下方法检索:
我需要将它们附加到finalDf中,我使用了以下代码:
finalDf是包含所有csv文件中所有产品的数据框架,我需要将其与当前csv的数据合并。
当前CSV的产品列表可使用以下方法检索:
df['PRODUCT']
我需要将它们附加到finalDf中,我使用了以下代码:
finalDf['PRODUCT'] = finalDf['PRODUCT'].append(df['PRODUCT'],ignore_index=True)
这似乎很好地运作了,现在我需要将catid和marketid插入到finalDf的相应列中。因为catid和marketid在当前csv文件中是一致的,所以我只需要将它们添加与df数据帧中的行数相同的次数,这就是我试图在下面的代码中实现的。
finalDf = pd.DataFrame(columns=['PRODUCT', 'CAT_ID', 'MARKET_ID'])
finalDf['PRODUCT'] = finalDf.PRODUCT.astype('category')
df = pd.read_csv(filename, header=None,
names=['PRODUCT', 'URL_PRODUCT', 'RANK', 'URL_IMAGE', 'STARS', 'PRICE', 'NAME', 'SNAPDATE',
'CATEGORY', 'MARKETPLACE', 'PARENTCAT', 'LISTTYPE', 'VERSION', 'LEVEL'], sep='\t')
finalDf['PRODUCT'] = finalDf['PRODUCT'].append(df['PRODUCT'],ignore_index=True)
# Here I have a single value to add n times, n corresponding to the number of rows in the dataframe df
catid = 2113
marketid = 13
catids = pd.Series([catid]*len(df.index))
marketids = pd.Series([marketid]*len(df.index))
finalDf['CAT_ID'] = finalDf['CAT_ID'].append(catids, ignore_index=True)
finalDf['MARKET_ID'] = finalDf['MARKET_ID'].append(marketids, ignore_index=True)
print finalDf.head()
PRODUCT CAT_ID MARKET_ID
0 ABC NaN NaN
1 ABB NaN NaN
2 ABE NaN NaN
3 DCB NaN NaN
4 EFT NaN NaN
正如您所看到的,我只有NaN值而不是实际值。
PRODUCT CAT_ID MARKET_ID
0 ABC 2113 13
1 ABB 2113 13
2 ABE 2113 13
3 DCB 2113 13
4 EFT 2113 13
finalDF 包含多个 csv 文件,看起来像这样:
PRODUCT CAT_ID MARKET_ID
0 ABC 2113 13
1 ABB 2113 13
2 ABE 2113 13
3 DCB 2113 13
4 EFT 2113 13
5 SDD 2114 13
6 ERT 2114 13
7 GHJ 2114 13
8 MOD 2114 13
9 GTR 2114 13
10 WLY 2114 13
11 WLO 2115 13
12 KOP 2115 13
有什么想法吗?
谢谢
finalDf.tail()
看起来会是什么样子?CAT_ID
和MARKET_ID
的值也会相同吗?你从哪里获取catid
和markedid
?我还是没有完全理解你的任务全貌。 - Cedric Zoppolo