поиск набора значений в строках (а не |) из столбца - PullRequest
0 голосов
/ 24 ноября 2018

Я новичок в python и пытаюсь найти записи из первого столбца, которые содержат во втором столбце все записи, которые я ищу.пример: я хочу записи {155, 137} и ожидаю получить 5 и 6 из столбца id1 взамен.

id1  id2
----------
1.    10
2.    10
3.    10
4.    9
5.    137
5.    150
5.    155
6.    10
6.    137
6.    155
....

Я много искал в Google, но не смог решить.Я прочитал эти записи из Excel, я пытался с несколькими циклами for, но это не выглядит красиво, потому что я ищу много записей

Я попробовал это:

df = pd.read_excel('path/temp.xlsx') #now I have two Columns and many rows

d1 = df.values.T[0].tolist()

d2 = df.values.T[1].tolist()

d1[d2.index(115) & d2.index(187)& d2.index(276) & d2.index(239) & d2.index(200) & d2.index(24) & d2.index(83)] 

и он вернулся 1

Я начал работать на этой неделе, поэтому я очень новый

Ответы [ 3 ]

0 голосов
/ 24 ноября 2018

лучше всего использовать панд

import pandas as pd
import numpy as np

Случайные данные

n = 10
I = [i for i in range(1,7)]
df1 = pd.DataFrame({'Id1': [Id[np.random.randint(len(I))] for i in range(n)],
                    'Id2': np.random.randint(0,1000,n)})

df1.head(5)
   Id1  Id2
0    4  170
1    6  170
2    6  479
3    4  413
4    6   52

Запрос с использованием

df1.loc[~df1.Id2.isin([170,479])].Id1
Out[344]: 
3    4
4    6
5    6
6    3
7    1
8    5
9    6
Name: Id1, dtype: int64
0 голосов
/ 24 ноября 2018

сейчас, я решил это, выполнив это

enter image description here

0 голосов
/ 24 ноября 2018

Предполагается, что у вас есть два списка для обоих идентификаторов (т.е. один список для id1 и один для id2), и списки соответствуют друг другу (это означает, что значение индекса i в list1 соответствует значению вindex i из list2).

Если это ваш случай, то вам просто нужно найти индекс элемента, который вы хотите найти, и соответствующий индекс в другом списке будетответ на ваш запрос.

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

list.index(<element>)

Он вернетсяНачинающийся с нуля индекс нужного вам элемента в списке.

Чтобы получить соответствующий идентификатор из id1, вы можете просто использовать этот индекс (из-за однозначного соответствия).В вашем случае это может быть записано как:

id1[id2.index(137)] #it will return 5

ПРИМЕЧАНИЕ: метод index() вернет индекс первой соответствующей записи из списка.

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