Панды: Как динамически использовать метод df.name.unique (), чтобы найти все уникальные записи столбцов? - PullRequest
0 голосов
/ 20 сентября 2019

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

import pandas as pd

df = pd.read_csv('test.txt',delim_whitespace=True)

for key in list(df.keys()):
    uni = set(df[key])

Что это на самом деле,как сделать это с помощью собственных методов / функций pandas динамически и с этим странным синтаксисом, который я не могу понять, почему кто-то будет его использовать:

In [101]: list(df.keys())
Out[101]: ['id_cliente', 'id_ordine', 'data_ordine', 'id_medium']

С этими ключами вы можете найти их уникальные значения столбцов с помощьюследующий синтаксис:

In [102]: df.id_cliente.unique()
Out[102]: array(['madinside', 'lisbeth19'], dtype=object)

Я не могу использовать этот метод динамически, как в моей итерации выше, могу ли я?Я могу использовать его, только если сначала найду ключи и вручную введу оператор df.NAME.unique(), верно?

Почему это так?Этот метод предназначен исключительно для интерактивного использования с консоли Python?Существует ли собственный метод pandas.DataFrame для динамического определения уникальных значений?

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Вы можете сделать это динамически

df.T.apply(pd.Series.unique,1)
1 голос
/ 20 сентября 2019

Это работает для вашего df?

unique_stuff = [{col: set(df[col].unique())} for col in df.columns]

edit: на самом деле я не думаю, что вам даже нужна set здесь.Я удалил это ниже:

unique_stuff  = [{col: df[col].unique().tolist()} for col in df.columns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...