to_dict () создает скобки вокруг значений - PullRequest
0 голосов
/ 17 сентября 2018

Я пытаюсь создать словарь по умолчанию из моего pandas DataFrame, но метод to_dict () создает нежелательные квадратные скобки вокруг значений столбцов, которые я хочу записать. Пример кода выглядит следующим образом:

# Create DF
my_df = pd.DataFrame({'numbers': (1, 2, 3, 4, 5), 'letters': ('a', 'b', 'c', 'd', 'e')})

# Create dictionary from the DF
my_dict = my_df.set_index('numbers').T.to_dict('list')

# Create collections dictionary
my_collections_dict = collections.defaultdict(int, my_dict)

Результат:

defaultdict(int, {1: ['a'], 2: ['b'], 3: ['c'], 4: ['d'], 5: ['e']})

что я хочу это:

defaultdict(int, {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'})

как получить «чистые» значения столбца?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вам не нужно транспонировать свой фрейм, вместо этого вы можете выбрать столбец и сделать:

my_dict = my_df.set_index('numbers')['letters'].to_dict()

, если у вас есть несколько столбцов, которые вы хотите использовать в своем словаре, он будетвзять дополнительную строку, но вы можете использовать:

my_dict = my_df.set_index('numbers').to_dict(orient='index')
my_dict = {k: list(v.values()) for k, v in my_dict.items()}
0 голосов
/ 17 сентября 2018

Это потому, что вы указываете to_dict('list') -> таким образом записи будут возвращаться в виде списков (именно поэтому они отображаются в [].

Попробуйте использовать records вместо:

# Create DF
my_df = pd.DataFrame({'numbers': (1, 2, 3, 4, 5), 'letters': ('a', 'b', 'c', 'd', 'e')})

# Create dictionary from the DF
my_dict = my_df.set_index('numbers').T.to_dict('records')

# Create collections dictionary
my_collections_dict = collections.defaultdict(int, my_dict)

Вывод со второй строки:

[{1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...