Geo Pandas dataFrame с использованием iterrows () для заполнения словаря данными столбца - PullRequest
0 голосов
/ 17 апреля 2020

Я использую pandas DataFrame для создания вложенного словаря со столбцом, содержащим имена. Каждый элемент словаря является вложенным словарем, а ключ каждого вложенного словаря - это имя из столбца DataFrame.

Я использую эту строку для заполнения словаря:

for row, name in map_datafile.iterrows():         
    material_count[name._get_value(label='NAME')] = {}

По какой-то причине результирующий словарь содержит только 579 из 586 имен, содержащихся в DataFrame. По этой причине, когда я go добавляю столбец с новыми данными, которые я вычислил из этого словаря, я получаю эту ошибку:

ValueError: Length of values does not match length of index

Указывает, что длина значений для вставки в DataFrame отличается от DataFrame.

Я неправильно заполняю словарь? Любой совет по этому вопросу был бы отличным, я новичок в DataFrames.

1 Ответ

0 голосов
/ 17 апреля 2020

.iterrows() возвращает индекс, а затем строку.
Кроме того, вы можете получить доступ к значению с другим синтаксисом вместо вызова ._get_value().
Так что вы можете сделать вместо этого:

for idx, row in map_datafile.iterrows():         
    material_count[row['NAME']] = {}

Вы могли бы сделать (возможно, быстрее):

material_count = {k:{} for k in map_datafile['NAME'].to_list()} 
...