如何使用Pandas通过索引获取两个csv之间的差异

时间:2018-09-18 12:45:50

标签: python pandas

需要获取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 :(得分:2)

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)]

答案 1 :(得分:2)

您可以使用'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)]

答案 2 :(得分:1)

您可以将两个数据帧连接为一个,然后删除所有重复项

console.log(error.message)

出局:

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)