通过具有相同列、不同ord的结果数据帧对三个组执行并集

2024-10-01 00:34:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了三个不同的pandas数据帧,通过对三个不同的数据(A、B、C列)应用groupby 使用。你知道吗

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\u 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\u复制之后,我得到了不同的结果。但是在任何其他组合上执行drop\u复制似乎都失败了。你知道吗


Tags: 数据pandasindexcountquerydropdf1duplicates
1条回答
网友
1楼 · 发布于 2024-10-01 00:34:43

问题很简单,因为我使用了来自三个不同表的数据到三个不同的模型中,然后到三个不同的pd数据帧中。然后执行Group by,然后Concat和Drop Duplicate以获得不同的结果。你知道吗

分辨率: 前两个表的[C]列,其中的数据类型为varchar,而第三个表的数据类型为big int,其中的drop\u duplicate未能提供适当的结果

更改数据类型会得到准确的结果。 另一种动态转换数据类型的方法是使用 df1[[“C”]=df1[[“C”]]。应用(pd.to\数字)你知道吗

相关问题 更多 >