Добавить ряд в датафрейм, который является пересечением двух других - PullRequest
0 голосов
/ 31 октября 2018

Предположим, у меня есть такой фрейм данных

column1   column2
   1        8
   2        9
   20       1 
   4        2
   56
   6
   2

Я хочу такой результат:

column1   column2   column3
   1        8          1
   2        9          2
   20       1 
   4        2
   56
   6
   2

Итак, я хочу получить результат в столбце 3

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Используя set.intersection с pd.DataFrame.loc:

L = list(set(df['column1']) & set(df['column2']))
df.loc[np.arange(len(L)), 'column3'] = L

print(df)

   column1  column2  column3
0        1      8.0      1.0
1        2      9.0      2.0
2       20      1.0      NaN
3        4      2.0      NaN
4       56      NaN      NaN
5        6      NaN      NaN
6        2      NaN      NaN

Вы должны знать, что это не векторизовано и в некоторой степени противоречит структуре с Pandas / NumPy, следовательно, это решение, которое использует обычные объекты Python.

0 голосов
/ 31 октября 2018
column = [1, 2, 20, 4, 56, 6, 2]
column = [8, 9, 1, 2]
list_1 = []

for item1 in column1:
    for item2 in column2:
        if item1 == item2:
            list_1.append(item1)
        else:
            print("NO MATCH")
z = list(set(list_1))
print(z)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...