Объединение двух DFS в Пандах - PullRequest
0 голосов
/ 28 февраля 2019

Я хотел бы узнать, существует ли способ проверить, существует ли значение в одном df, которое соединяется с другим, в обоих dfs или в другом df, а также перед их наложением друг на друга ??

У меня было два dfs как

df = pd.concat([df1, df2])
df = df.sort_values(by=['id', 'timestamp']).reset_index(drop=True)
df

   id  timestamp
0   1 1959-06-01
1   1 2019-01-01
2   1 2019-01-02
3   2 1989-12-01
4   2 2019-01-15
5   3 1999-01-25
6   3 2019-01-17
7   3 2019-02-01
8   3 2019-02-03

Был ли способ проверить, что ID в df1 существовал в df2 перед объединением, аналогичным объединению?Мне не нужно было объединять, но вместо этого объединять dfs друг с другом.

Один df имеет несколько идентификаторов и временных меток, а другой имел только один идентификатор, и я хотел убедиться, что только идентификаторы, которые существуют в обоихбыли в полученном сцепленном df

спасибо!

Ответы [ 4 ]

0 голосов
/ 28 февраля 2019

это то, что вы ищете?прикрепление примера кода.

df = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'],'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})
other = pd.DataFrame({'key': ['K0', 'K1', 'K2'],'B': ['B0', 'B1', 'B2']})
new = df.set_index('key').join(other.set_index('key'))
new.dropna(axis=0, how='any', thresh=None, subset=None, inplace=True)
print(new)

Или

import pandas as pd 
df = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'],'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})
other = pd.DataFrame({'key': ['K0', 'K1', 'K2'],'A': ['A0', 'A1', 'A2']})
new = pd.merge(df , other , how = 'inner')
print(new)

Вам это помогает?

0 голосов
/ 28 февраля 2019

проверка для всей строки

df3=pd.concat([df1,df2[~df2.isin(df1)]],ignore_index=True).dropna()

проверка для одного столбца

df3=pd.concat([df1,df2[~df2['col_name'].isin(df1['col_name'])]],ignore_index=True).dropna()
0 голосов
/ 28 февраля 2019

Вы можете использовать df.isin, пожалуйста попробуйте ..

0 голосов
/ 28 февраля 2019

Один из обходных путей, который вы можете здесь сделать, - создать фиктивный столбец:

df1["df"] = 1
df2["df"] = 2
df = pd.concat([df1, df2])

Таким образом, вы сможете увидеть, где была получена каждая строка.

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