Я хотел выполнить расчет суммарных затрат, используя значения для 1 Вт, страны и автомобилей 0, и добавить это к 1 млн автомобилей 0, сделав то же самое для автомобилей 1,2, ..., 10. затем проделал то же самое для 1W и 3M и т. д. Я использовал вложенные циклы, как показано ниже в коде, но это занимает слишком много времени. Есть ли возможность использовать непосредственно панды вместо выполнения вложенных циклов?
Комбинация должна быть такой:
USD: 1W and 1M 1W and 3M 1W and 6M 1W and 1Y and 1M and 3M 1M and 6M 1M and 1Y and 3M and 6M 3M and 1Y and 6M and 1Y
import pandas as pd
csv_loader = pd.read_csv('Cars.csv', encoding='cp1252', sep=';', index_col=0).dropna()
for current_date in csv_loader.index.unique():
print('calculating date: ' +str(current_date))
for index, row in index_data.iterrows():
if index == current_date:
for index2, row2 in index_data.iterrows():
if index2 == current_date:
Мой CSV-файл выглядит следующим образом:
fact_date;Cars;Costs;Country;Car;Rental_Duration 2017-07-14;0;157.00;USD;Ford;1W 2017-07-14;1;122.00;USD;Ford;1W 2017-07-14;2;122.00;USD;Ford;1W 2017-07-14;3;102.00;USD;Ford;1W 2017-07-14;4;153.00;USD;Ford;1W 2017-07-14;5;130.00;USD;Ford;1W 2017-07-14;6;151.00;USD;Ford;1W 2017-07-14;7;132.00;USD;Ford;1W 2017-07-14;8;153.00;USD;Ford;1W 2017-07-14;9;191.00;USD;Ford;1W 2017-07-14;10;131.00;USD;Ford;1W 2017-07-14;0;571.00;USD;Ford;1M 2017-07-14;1;526.00;USD;Ford;1M 2017-07-14;2;568.00;USD;Ford;1M 2017-07-14;3;546.00;USD;Ford;1M 2017-07-14;4;593.00;USD;Ford;1M 2017-07-14;5;541.00;USD;Ford;1M 2017-07-14;6;536.00;USD;Ford;1M 2017-07-14;7;532.00;USD;Ford;1M 2017-07-14;8;537.00;USD;Ford;1M 2017-07-14;9;582.00;USD;Ford;1M 2017-07-14;10;523.00;USD;Ford;1M 2017-07-14;0;679.00;USD;Ford;3M 2017-07-14;1;641.00;USD;Ford;3M 2017-07-14;2;622.00;USD;Ford;3M 2017-07-14;3;654.00;USD;Ford;3M 2017-07-14;4;655.00;USD;Ford;3M 2017-07-14;5;635.00;USD;Ford;3M 2017-07-14;6;623.00;USD;Ford;3M 2017-07-14;7;678.00;USD;Ford;3M 2017-07-14;8;689.00;USD;Ford;3M 2017-07-14;9;694.00;USD;Ford;3M 2017-07-14;10;625.00;USD;Ford;3M 2017-07-14;0;726.00;USD;Ford;6M 2017-07-14;1;718.00;USD;Ford;6M 2017-07-14;2;770.00;USD;Ford;6M 2017-07-14;3;793.00;USD;Ford;6M 2017-07-14;4;704.00;USD;Ford;6M 2017-07-14;5;739.00;USD;Ford;6M 2017-07-14;6;785.00;USD;Ford;6M 2017-07-14;7;701.00;USD;Ford;6M 2017-07-14;8;718.00;USD;Ford;6M 2017-07-14;9;714.00;USD;Ford;6M 2017-07-14;10;788.00;USD;Ford;6M 2017-07-14;0;992.00;USD;Ford;1Y 2017-07-14;1;935.00;USD;Ford;1Y 2017-07-14;2;981.00;USD;Ford;1Y 2017-07-14;3;955.00;USD;Ford;1Y 2017-07-14;4;920.00;USD;Ford;1Y 2017-07-14;5;978.00;USD;Ford;1Y 2017-07-14;6;943.00;USD;Ford;1Y 2017-07-14;7;911.00;USD;Ford;1Y 2017-07-14;8;969.00;USD;Ford;1Y 2017-07-14;9;922.00;USD;Ford;1Y 2017-07-14;10;978.00;USD;Ford;1Y
Результат, который я ожидаю, будет следующим:
fact_date Cars Costs_Total Car Country Rental_Duration 2017-07-14 0 728 Ford USD 1W_1M 2017-07-14 1 648 Ford USD 1W_1M 2017-07-14 2 690 Ford USD 1W_1M 2017-07-14 3 648 Ford USD 1W_1M 2017-07-14 4 746 Ford USD 1W_1M 2017-07-14 5 671 Ford USD 1W_1M 2017-07-14 6 687 Ford USD 1W_1M 2017-07-14 7 664 Ford USD 1W_1M 2017-07-14 8 690 Ford USD 1W_1M 2017-07-14 9 773 Ford USD 1W_1M 2017-07-14 10 654 Ford USD 1W_1M 2017-07-14 0 836 Ford USD 1W_3M 2017-07-14 1 763 Ford USD 1W_3M 2017-07-14 2 744 Ford USD 1W_3M 2017-07-14 3 756 Ford USD 1W_3M 2017-07-14 4 808 Ford USD 1W_3M 2017-07-14 5 765 Ford USD 1W_3M 2017-07-14 6 774 Ford USD 1W_3M 2017-07-14 7 810 Ford USD 1W_3M 2017-07-14 8 842 Ford USD 1W_3M 2017-07-14 9 885 Ford USD 1W_3M 2017-07-14 10 756 Ford USD 1W_3M 2017-07-14 0 883 Ford USD 1W_6M 2017-07-14 1 840 Ford USD 1W_6M 2017-07-14 2 892 Ford USD 1W_6M 2017-07-14 3 895 Ford USD 1W_6M 2017-07-14 4 857 Ford USD 1W_6M 2017-07-14 5 869.00 Ford USD 1W_6M 2017-07-14 6 936.00 Ford USD 1W_6M 2017-07-14 7 833.00 Ford USD 1W_6M 2017-07-14 8 871.00 Ford USD 1W_6M 2017-07-14 9 905.00 Ford USD 1W_6M 2017-07-14 10 919.00 Ford USD 1W_6M
это не дает прямого ответа на ваш вопрос, но, насколько я понимаю, вы можете изменить Rental_Duration на Rental_Start с датой начала и рассчитать продолжительность на лету
@ rahlf23, нет, я хотел еще получить сумму затрат на аренду продолжительностью 1 Вт и 1 М и т. д., а затем сохранить ее. Это понятнее?
@JeffXiao, нет, я хотел бы получить сумму затрат на аренду продолжительностью 1 Вт и 1 М и т. д., А затем сохранить ее. Это понятнее?






Вы спрашиваете, можно ли условно фильтровать фрейм данных на основе значений столбцов? Например:
df[df['Rental_Duration'].isin(['1W','3M'])]