Лучший способ обновить цены с помощью pandas

#python #pandas #csv

#python #pandas #csv

Вопрос:

Сначала я пишу этот пост на своем телефоне, находясь в дороге. Извините за отсутствие информации, просто пытаюсь получить преимущество, когда вернусь домой.

У меня есть 2 csv-файла, оба из которых содержат разное количество столбцов и разное количество записей. В первом файле содержится около 150 тыс. записей, а во втором — около 1,2 млн. записей. Первый файл первый столбец содержит значения, которые находятся как в столбце во втором файле, так и в значениях, которых нет во втором файле. Что я намерен сделать, так это проверить, находится ли значение в первом столбце первого файла в первом столбце второго файла. Если это так, проверьте, является ли значение второго столбца первого файла меньше нашего значения, чем значение другого столбца во втором файле, где совпадают первые столбцы. Если это так, обновите первый файл второго столбца до нового значения.

Примечание: мне не нужен самый быстрый или эффективный способ, мне просто нужно рабочее решение на данный момент. Я оптимизирую позже. Код будет запускаться один раз в месяц для обновления csv-файла.

В настоящее время я пытаюсь выполнить это с помощью pandas и загружать каждый файл в dataframe. Я изо всех сил пытаюсь заставить это работать. Если это лучший способ, не могли бы вы помочь мне сделать это? Как только я выясню, как это сделать, я смогу разобраться с остальным, я просто застрял.

О чем я подумал перед тем, как опубликовать этот вопрос, что я мог бы попытаться создать третий фрейм данных, содержащий столбцы, содержащие материальные ценности и значения DCost, в которых совпадают столбцы Item и Material. Цикл по фрейму данных и значение if из столбца Item и Material совпадают со столбцом updat cost в файле csv

Я не знал, будет ли проще загружать CSV-файлы в базу данных и запускать запросы для этого?

Будет ли преобразование фреймов данных в dicts работать с таким количеством данных?

Файл 1

  -------- ------- -------- 
|  Item  | Cost  | Price  |
 -------- ------- -------- 
| Labor  |     0 | 100.00 |
| 785342 | 12.54 |  24.76 |
| 620388 | 15.78 |  36.99 |
 -------- ------- -------- 
  

Файл 2

  ---------- -------- ----------- 
| Material | DCost  | List Cost |
 ---------- -------- ----------- 
| 10C0024  |    .24 |      1.56 |
| 785342   |  12.54 |     23.76 |
| 620388   |  16.99 |     36.99 |
| 2020101  | 100.76 |    267.78 |
 ---------- -------- ----------- 
  

Предполагаемый результат для экспорта в csv.

  -------- ------- -------- 
| Labor  | Cost  | Price  |
 -------- ------- -------- 
| Labor  |     0 | 100.00 |
| 785342 | 12.54 |  23.76 |
| 620388 | 16.99 |  36.99 |
 -------- ------- -------- 
  

Комментарии:

1. Не могли бы вы добавить еще пару примеров / результатов? Немного неясно, почему 18C808 , похоже, содержит дополнительные данные для расчета новой стоимости. Также может помочь включить некоторый фиктивный dataframes файл с предполагаемыми результатами.

2. @PacketLoss Я отредактировал вопрос