Я зацикливаюсь на csv-файлах в каталоге и читаю их с помощью панд.
Для каждого файла CSV у меня есть категория и торговая площадка.
Затем мне нужно получить идентификатор категории и идентификатор рынка из базы данных, которая будет действительна для этого CSV-файла.
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
Есть идеи?
Спасибо