【发布时间】:2019-01-23 06:02:03
【问题描述】:
需要你的帮助。
我有两个从 csvs 创建的数据框,我需要返回一个新的数据框,这将是特定字段/列上两者之间的差异。例如,如果 df1 中的 ID 不在 df2 中,则 df3 应该为我提供 df1 中不在 df2 中的所有列和行。
注意 df1 和 df2 列不相同,即 df1 可以比 df2 有更多或更少的列,但 df3 中的列应该与 d1 相同。此外,ID(来自 df1)和用户 ID (df2) 值将成为协调因素,字段中的数据将是共同因素,但实际字段名称不同。
由于下表不清楚,请提前致歉。所以在下面的例子中,df1 中的第一行不在 df2 中,df3 应该有这一行。完成后,我需要将 df3 保存为 csv。
DF1
方向 ID 数量 公司状态
卖出 - 09 - 32000 - T LTD - 拒绝
购买 - 12 - 25000 - G Ltd - 完成
卖出 - 15 - 35000 - H Ltd - 完成
DF2
方向用户ID数量公司状态评级
买入 - 12 - 25000 - G Ltd - 完成 - 良好评级
卖出 - 15 - 35000 - H Ltd - 完成 - 良好评级
在此先感谢
到目前为止的代码:
import pandas as pd
fileLocationDF1 = "BBG.csv"
fileLocationDF2 = "corp.csv"
createDf1 = pd.read_csv(fileLocationDF1, low_memory = False)
createDf2 = pd.read_csv(fileLocationDF2, engine='python')
我找到了我认为会有所帮助的 isin 方法,但问题是“用户 ID”列 (df2) 在数据框中有一个空格(如 csv 中的情况)。
createDf1[createDf1.ID.isin(createDf2.columns[2].values)]
当
出现以下错误AttributeError: 'str' object has no attribute 'values'
我在 isin 方法中传递了列 [2],因为用户 ID 有一个空格
请帮助解决错误以及未读取数据的原因,以便我可以获得一个唯一集,其中来自 df2 的用户 ID 不在 df1 的 ID 中。
See below - the one highligted is the one that is missing in DF2 and I would like this in df3
CParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file.
【问题讨论】:
-
您使用哪些列进行比较?
DF1中的所有列? -
只是 ID 列
-
@jpp 请看下面
-
这些列中的哪一个可能是 ID 列?第二个?
-
是 DF1 中的第二列以及 df2 中的“用户 ID” - 应检查这两列中的数据