Как я могу установить подкадр данных на основе списка уникальных значений в столбцах этого же фрейма данных? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть простой фрейм данных, который выглядит следующим образом.Я хочу иметь возможность выбрать все строки, где LOC - это Нью-Йорк, установить поднабор этого фрейма данных и пометить его как переменную, которую я могу использовать, чтобы добавить нью-йоркские строки к электронному письму, которое я создал с помощью win32, контактному лицу.Затем перейдите в Бостон и сделайте то же самое и т. Д. Я не могу понять, как извлечь строки LOC без явного присвоения им имен.Я хочу, чтобы это было динамическим при изменении значений LOC.

    Contact          LOC     ...     Add_Move  First Name
0   mike@osjloc1.com     New York     ...          Add         Joe
1   mike@osjloc1.com     New York     ...         Move        Stan
2   mike@osjloc1.com     New York     ...          Add        Rick
3   mike@osjloc1.com     New York     ...          Add        Mike
4   jeff@osjloc2.com       Boston     ...          Add       Sonya
5   jeff@osjloc2.com       Boston     ...         Move        Matt
6   jeff@osjloc2.com       Boston     ...         Move       Randy
7   jeff@osjloc2.com       Boston     ...          Add         Sue
8    dave@osjloc.com  Los Angeles     ...          Add        Jill
9    dave@osjloc.com  Los Angeles     ...         Move       Steve
10   dave@osjloc.com  Los Angeles     ...          Add        Bill

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Вы можете использовать pandas groupby .

groups = yourdataframe.groupby('LOC')

groups содержит подмножества данных, разделенные по столбцу 'LOC'.Если вы итерируете его, на каждой итерации у вас будет кортеж из двух частей.Рекламный индекс 0, строка, соответствующая значению 'LOC', для индекса 1 - кадр данных, соответствующий подмножеству (все еще кадр данных).

for locname, subset in groups:
    #do whatever you want with the subset

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

for locname, subset in groups:
    print(subset['Contact'])
0 голосов
/ 23 апреля 2019

Булево индексирование.Вы можете маскировать столбец в кадре данных на основе значения столбца https://www.geeksforgeeks.org/boolean-indexing-in-pandas/

Получение всех уникальных местоположений в кадре данных.

locations = set(df.loc[:,"LOC"])

местоположения вернут набор {"Нью-Йорк", "Бостон", ...}

for location in locations:
    variable = df[df["LOC"]==location]

Цикл for будет циклически перебирать созданный набор значений.Чтобы отфильтровать данные по значению столбца, мы можем создать маску на основе таких операторов, как ==,! =, ...

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