Разделение одного и того же значения идентификатора между местоположениями в наборе данных с использованием Python - PullRequest
0 голосов
/ 20 марта 2020

У меня есть набор данных, который содержит экспериментальные данные по местоположению и alphanumeri c ID. Есть несколько разных мест и несколько разных идентификаторов в каждом месте. Каждая пара ID-местоположения получает свою собственную строку в CSV. Не в каждом месте есть каждый идентификатор. Существует базовый набор идентификаторов, который можно найти в каждом отдельном месте набора данных, в котором я заинтересован. Простой список идентификаторов, найденных в каждом месте, будет идеальным. В этих местах распределено ~ 20 разных местоположений и ~ 1000 разных идентификаторов, всего около 12 000 экспериментов. Пример выглядит следующим образом: введите описание изображения здесь

Сначала я попытался создать сводную таблицу идентификаторов по местоположению, чтобы затем можно было определить способ сортировки, но поскольку идентификаторы не цифра c, это не похоже на работу. Затем я попытался создать списки каждого идентификатора в каждом месте. Если бы мне удалось создать эти списки, можно ли было бы отфильтровать их, чтобы найти общие идентификаторы в каждом месте? Или может быть более простой метод с самого начала?

1 Ответ

0 голосов
/ 23 марта 2020

Я не уверен, что это то, что вы ищете, но я использовал groupby, чтобы получить сгруппирован в список unique значений:

Сначала я должен сгенерировать пример данных:

import pandas as pd
import numpy as np

n = 30
letters = np.array(['A','B'])
locs = np.array(['THX','IAH'])
year = np.random.randint(2013,2016,n)
ids = np.array([letters[np.random.randint(0,len(letters))]+str(np.random.randint(1,100)) for i in range(n)])
locations = np.array([locs[np.random.randint(0,len(locs))]+str(np.random.randint(1,5)) for i in range(n)])

df = pd.DataFrame(np.vstack([year,locations,ids]).T,columns=['Year','Location','id'])

Тогда вы можете сделать:

In: df['id'].groupby(df['Location']).apply(lambda L: np.unique(L))

Out:
Location
IAH1                                     [A18, A45, B5]
IAH3                                    [A17, B12, B59]
IAH4                          [A84, A86, B27, B43, B87]
THX1    [A48, A51, A6, A72, A8, A82, B23, B4, B66, B78]
THX2                     [A25, A41, A49, A58, B13, B39]
THX3                                    [A26, A63, B61]
Name: id, dtype: object
...