Получить ряд данных в пандах в качестве диктата - PullRequest
0 голосов
/ 18 декабря 2018

Чтобы получить строку данных в пандах по индексу, я могу сделать:

df.loc[100].tolist()

Есть ли способ получить эту строку данных в качестве диктанта, кроме как:

dict(zip(
    df.columns.tolist(),
    df.loc[100], tolist()
))

Ответы [ 5 ]

0 голосов
/ 18 декабря 2018

Вы столкнетесь с проблемой, если у вас есть столбцы с неуникальными именами.

Демонстрация:

>>> df = pd.DataFrame([[1,2,3,4,5], [6,7,8,9,10]], columns=['A', 'B', 'A', 'C', 'B'])                                     
>>> df                                                                                                                 
   A  B  A  C   B
0  1  2  3  4   5
1  6  7  8  9  10
>>> df.loc[1].to_dict()                                                                                                
{'A': 8, 'B': 10, 'C': 9}

Если это может произойти в вашем фрейме данных, сделайте столбцы уникальными перед созданиемДикт.

Вот идея сделать это:

>>> from itertools import count 
>>>                                                                                       
>>> col_isdupe = zip(df.columns, df.columns.duplicated(keep=False))                                                    
>>> counters = {c:count() for c, dupe in col_isdupe if dupe}                                                           
>>> df.columns = ['{}_{}'.format(c, next(counters[c])) if c in counters else c 
...:              for c in df.columns]                               
>>> df                                                                                                                 
   A_0  B_0  A_1  C  B_1
0    1    2    3  4    5
1    6    7    8  9   10
>>>                                                                                                                    
>>> df.loc[1].to_dict()                                                                                                
{'A_0': 6, 'A_1': 8, 'B_0': 7, 'B_1': 10, 'C': 9}
0 голосов
/ 18 декабря 2018

Скажем, ваш фрейм данных df и вы хотите строку с индексом k, вы можете сделать:

list(df.iloc[k,:])

Результатом будет список всех значений в строке k.

0 голосов
/ 18 декабря 2018

Вы можете использовать items:

dict(df.loc[100].items())
0 голосов
/ 18 декабря 2018

df.loc[x] возвращает отображение pd.Series, так что вы можете просто использовать конструктор dict напрямую:

dict(df.loc[100])

Или вспомогательный метод to_dict, если вы предпочитаете ...

Этот вопрос поднимает вопрос, вы уверены, что вам вообще нужен dict?

0 голосов
/ 18 декабря 2018

Попробуйте с to_dict

df.loc[1].to_dict()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...