我通过对具有列A,B,C的三个不同数据应用Group By创建了三个不同的熊猫数据框 使用。
Resultdf=SessionDev.query(AppDetails).filter(text(" A in ('20170727L00319')")).all()
df1= Resultdf.groupby(["A", "B","C"]).size().reset_index(name='Count')
[df1]
A | B | C |Count
0 | 20170727L00319 | 423605030008907 | 319 | 1
1 | 20170727L00319 | 42360604002461 | 319 | 1
[df2]
A | B | C | Count
0 | 20170727L00319 | 423605030008907 | 319 | 2
1 | 20170727L00319 | 423606040002461 | 319 | 2
[df3]
A | B | C | Count
0 | 20170727L00319 | 423605030008907 | 319 | 1
1 | 20170727L00319 | 423606040002461 | 319 | 2
我想对上述三个分组数据帧结果进行合并(不包括重复),将结果合并为具有不同结果的单个数据帧
我尝试合并这三个不同的数据框,然后使用drop_duplicates删除重复的数据,但是我找不到任何结果
A | B | C
0 | 20170727L00319 | 423605030008907 | 319
1 | 20170727L00319 | 423606040002461 | 319
2 | 20170727L00319 | 423605030008907 | 319
3 | 20170727L00319 | 42360604002461 | 319
5 | 20170727L00319 | 423606040002461 | 319
使用
FinalUnion=pd.concat([df1,df2,df3],ignore_index=True,join_axes=[df1.drop(['Count'],axis=1)
FinalUnion.drop_duplicates(['B','C'], keep='first')
我期望结果如下
A | B | C
0 | 20170727L00319 | 423605030008907 | 319
1 | 20170727L00319 | 423606040002461 | 319
3 | 20170727L00319 | 42360604002461 | 319
更新:
在对A列和B列执行drop_duplicates后,我得到了不同的结果。但是对任何其他组合执行drop_duplicates似乎失败了。
答案 0 :(得分:0)
问题很简单,因为我将来自三个不同表的数据用于三个不同的模型,然后用于三个不同的pd数据帧。然后执行“分组依据”,然后执行“ Concat”和“删除重复项”以获得不同的结果。
解决方案: 前两个表的列[C]的数据类型为varchar,第三个表的列为big-int,因为drop_duplicate无法提供适当结果的原因是
更改数据类型可以得到准确的结果。 动态转换数据类型的另一种方法是使用 df1 [[“”“] = df1 [[” C“]]。apply(pd.to_numeric)