Я получаю данные из многолистового файла xlsx и храню данные в отдельных файлах csv.Первые строки всех листов в xslx сохраняются в первом csv, вторые строки всех листов сохраняются во втором csv и т. Д.Теперь иногда любая из ячеек с 3-го по 10-й столбец содержит буквенно-цифровые значения, такие как «1 pkt».Мне нужно сделать эти значения только числовыми, например, «1», чтобы я мог передать эти значения в модель ML, чтобы что-то предсказать.Для этого я написал код:
xls = xlrd.open_workbook(r'Smallys ORDER.xlsx', on_demand=True)
df_list = []
names = xls.sheet_names()
names.remove('EVENT')
for i in range(191):
rows = []
for name in names:
count = 0
prod = pd.read_excel('Smallys ORDER.xlsx', name, index_col=None, header=0)
prod['date'] = name
prod.fillna(0, inplace=True)
try:
item = prod.iloc[i]
item[3] = re.split('[a-z]+', item[3])[0]
print(item[3])
'''item[4] = item[4].split(sep, 1)[0]
item[5] = item[5].split(sep, 1)[0]
item[6] = item[6].split(sep, 1)[0]
item[7] = item[7].split(sep, 1)[0]
item[8] = item[8].split(sep, 1)[0]
item[9] = item[9].split(sep, 1)[0]
item[10] = item[10].split(sep, 1)[0]'''
rows.append(item)
except:
print('Row finished !!!')
writer = csv.writer(open('/home/hp/products/' + 'prod['+str(i)+'].csv', 'w'))
writer.writerow(prod.columns.tolist())
writer.writerows(rows)
print(item[3])
оператор ничего не печатает.Кроме того, в сгенерированных CSV-файлах печатались только заголовки.Все ячейки пусты.
Редактировать:
Перед применением любого регулярного выражения это:
item = prod.iloc[i]
print(item[3])
print(type(item[3]))
печатает это:
0
<class 'int'>
0
<class 'int'>
0
<class 'int'>
0
<class 'int'>
0
<class 'int'>
0
<class 'int'>
0
<class 'int'>
1 btl
<class 'str'>
0
<class 'int'>
Таким образом, значения являются целыми числами или строками.
Пример данных из листа исходного файла xlsx:
