Как получить разницу между двумя CSV по индексу с помощью панд - PullRequest
0 голосов
/ 18 сентября 2018

Нужно получить разницу между 2 CSV-файлами, уничтожить дубликаты и поля Nan.cite_id frame

df frame

Я пробую это, но он складывает их вместе вместо вычитания.

df1 = pd.concat([df,cite_id]).drop_duplicates(keep=False)[['id','website']]

df - это основной фрейм данных cite_id - это фрейм данных, который необходимо вычесть.

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018
import pandas as pd
df1 = pd.read_csv("1.csv")
df2 = pd.read_csv("2.csv")
df1 = df1.dropna().drop_duplicates()
df2 = df2.dropna().drop_duplicates()
df = df2.loc[~df2.id.isin(df1.id)]
0 голосов
/ 18 сентября 2018

Вы можете сделать это эффективно, используя 'isin'

df.dropna().drop_duplicates()
cite_id.dropna().drop_duplicates()
df[~df.id.isin(cite_id.id.values)]

Или Вы можете объединить их и сохранить только те строки, которые имеют NaN

df[pd.merge(cite_id, df, how='outer').isnull().any(axis=1)]
0 голосов
/ 18 сентября 2018

Вы можете объединить два кадра данных как один, после чего вы можете удалить все дубликаты

df1 

    ID  B   C   D
0   A0  B0  C0  D0
1   A1  B1  C1  D1
2   A2  B2  C2  D2
3   A3  B3  C3  D3

cite_id
    ID  B   C   D
4   A2  B4  C4  D4
5   A3  B5  C5  D5
6   A6  B6  C6  D6
7   A7  B7  C7  D7

pd.concat([df1,cite_id]).drop_duplicates(subset=['ID'], keep=False)

Out:

    ID  B   C   D
0   A0  B0  C0  D0
1   A1  B1  C1  D1
6   A6  B6  C6  D6
7   A7  B7  C7  D7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...