다음과 같은 제품 행이있는 CSV가 있습니다.
SKU;price;availability;Time;Supplier;CatCode
x1;10.00;0;1-4-2019;sup1;K1
x1;10.00;0;1-4-2019;sup1;K3
x1;10.00;0;1-4-2019;sup1;K2
그리고 또 다른 csv
CATCODE;MARGIN
K1;0.08
다음 코드를 시도하여 각 csv 일치에서 catcodes 목록 행의 한 요소 만 업데이트했습니다. 이 경우 K1 만 업데이트해야하며 다른 값은 동일하게 유지됩니다. 내가 시도한 것은 다음과 같습니다.
def ChangeToFinalCSV():
SetFixMinPrices = SetFixPrices()
CatCodes = GetCatCodes()
for FixMinPrice in SetFixMinPrices:
for cat in CatCodes:
if cat[0] == FixMinPrice[5]:
FixMinPrice[1] = (((float(FixMinPrice[1].replace(',','.').replace('€','')) + float(SupplierShipping)) * float(BankingComission))*(1+float(cat[1]))) * float(1.24)
FixMinPrice[1] = "{:.2f}".format(FixMinPrice[1])
FixMinPrice[1] = str(FixMinPrice[1]).replace('.',',') + ' €'
retailed.append(FixMinPrice)
return retailed
retailed = ChangeToFinalCSV()
그러나이 코드는 모든 요소를 변경합니다. K1을 CatCode로 사용하는 행뿐만 아니라 Python 열거로 수행하려고 생각했지만 방법을 모르겠습니다. 두 파일의 catcode가 일치하는 위치 만 업데이트하려면 어떻게합니까? 공식을 사용하여 가격에 마진을 곱하고 싶습니다 new_price=price(1+margin)
.
팬더 테이블이 아닌 이니셜과 같은 CSV를 사용하려고합니다.
처럼
SKU;price;availability;Time;Supplier;CatCode
x1;10.80;0;1-4-2019;sup1;K1
x1;10.00;0;1-4-2019;sup1;K3
x1;10.00;0;1-4-2019;sup1;K2
를 사용하지 않고 pandas
표준 파이썬과 csv
모듈 만 사용 하면 여기에 한 가지 방법이 있습니다. data.csv
"제품 행이있는 csv"이고 update.csv
다른 하나입니다.
#coding=utf-8
import csv
def GetCatCodes():
with open('data.csv') as csvfile:
reader = csv.DictReader(csvfile, delimiter=';')
return list(reader)
def SetFixPrices():
with open('update.csv') as csvfile:
reader = csv.DictReader(csvfile, delimiter=';')
return list(reader)
def ChangeToFinalCSV():
SetFixMinPrices = SetFixPrices()
CatCodes = GetCatCodes()
for cc in CatCodes:
for sfp in SetFixMinPrices:
if cc['CatCode'] == sfp['CATCODE']:
update_value = float(cc['price']) + float(sfp['MARGIN'])
cc['price'] = str(update_value)
return CatCodes
retailed = ChangeToFinalCSV()
with open('newdata.csv', 'w') as f:
fieldnames = ['SKU', 'price', 'availability', 'Time', 'Supplier', 'CatCode']
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(retailed)
newdata.csv
이제 다음이 포함됩니다.
x1,10.08,0,1-4-2019,sup1,K1
x1,10.00,0,1-4-2019,sup1,K3
x1,10.00,0,1-4-2019,sup1,K2
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다