Как объединить несколько столбцов данных и вывести в виде словаря

Я работаю над файлом csv. Структура файла таблицы csv выглядит следующим образом:

брендымодели2021_цена2020_цена
ШевролеТраверс32000024000
ШевролеРавноденствие2300018000
ШевролеПервопроходец1300014000

это то, что я пробовал сам

json_dict = {}
for index,row in df.iterrows():
    data=(
        {row[0]:{
        ''.join(str(row[1])):
            {
             "2021":' '.join(str(row[2]).split()),
             '2020':' '.join(str(row[3]).split()),
            }
        }
        }
    )
    json_dict.update(data)

Я получил это как вывод

 {
      "chevrolet":{
         "Traverse":{
            "2021":"320000",
            "2020":"24000",
         },
      
         "chevrolet":{
         "Equinox":{
            "2021":"23000",
            "2020":"18000",
           
         } 
   }

но ожидаемый словарь такой

{
      "chevrolet":{
         "Traverse":{
            "2021":"320000",
            "2020":"24000"
         },
      
         "Equinox":{
            "2021":"23000",
            "2020":"18000"
         } 
   }

это образец файла

NISSAN    Patrol Platinum City  1,260,000,000.00 UZS   Nan      
    NISSAN       Qasgqai        315,000,000.00 UZS    315,000,
    NISSAN       X-Trail        367,500,000.00 UZS     Nan

Можете ли вы также включить csv в виде простого текста из файла, пожалуйста?

Freddy Mcloughlan 17.05.2022 13:37

глагол означает? я не понял

nava 17.05.2022 13:39

точная копия. просто скопируйте и вставьте файл, пожалуйста

Freddy Mcloughlan 17.05.2022 13:42

добавлена ​​табличная структура файла, файл очень большой, надеюсь, я объяснил вам

nava 17.05.2022 13:49

Это csv? запятых нет. и nan кажется значением pandas

Freddy Mcloughlan 17.05.2022 13:56

нан означает пустой я просто пытался сделать проще

nava 17.05.2022 13:57
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
6
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я вас правильно понял, вы хотите сгруппировать по «брендам», а затем создать словарь:

out = {}
for b, g in df.groupby("brands"):
    out[b] = {
        row["models"]: {
            "2020": row["2020_price"],
            "2021": row["2021_price"],
        }
        for _, row in g.iterrows()
    }

print(out)

Отпечатки:

{
    "chevrolet": {
        "Traverse": {"2020": 24000, "2021": 320000},
        "Equinox": {"2020": 18000, "2021": 23000},
        "Trailblazer": {"2020": 14000, "2021": 13000},
    }
}

Другие вопросы по теме