熊猫数据框结合了唯一的行值

时间:2020-05-17 12:05:42

标签: python sql pandas dataframe pandas-groupby

我有一个类似以下的数据框,具有超过90000行。

origin      destination people
101011001   101011001   7378
101011001   101011002   120
101011001   101011002   8
101011001   101011002   285
101011001   101011003   7
101011001   101011004   0
101011001   101011004   1
101011001   101011004   2
101011001   101011004   9
101011002   101011001   5

如您所见,某些origindestination值会重复,例如,存在多行,其中origin = 101011001,destination = 101011002。 我的目标是将重复的origindestination值和 sum 分组到people列中,因此数据帧如下所示:

origin      destination people
101011001   101011001   7378
101011001   101011002   413
101011001   101011003   7
101011001   101011004   12
101011002   101011001   5

我尝试了jsondf.groupby(['origin', 'destination']).sum(),它为我提供了正确的总和和目标值,但是这并不是我想要的,因为我希望原始值也显示在每个目标行中。

注意,我的最终目标是将该数据帧作为表放入SQL数据库中,并使用上面的.groupby()代码,将原始值和目标值实际上解释为NULL,即不是我想要的

谢谢!

1 个答案:

答案 0 :(得分:0)

一种获取每个原始值显示的快速简便的方法是在使用groupby之后简单地重置索引。这是一个示例,显示重置索引前后数据库的外观:

df.groupby(['origin', 'destination']).sum()

origin      destination  people
101011001   101011001    7378
            101011002    413
            101011003    7
            101011004    12
101011002   101011001    5

一旦添加了reset_index(),数据框将在每一行中表示每个原始值。

    df.groupby(['origin', 'destination']).sum().reset_index()

    origin      destination people
0   101011001   101011001   7378
1   101011001   101011002   413
2   101011001   101011003   7
3   101011001   101011004   12
4   101011002   101011001   5

这应该允许您发送到sql数据库,而无需将原始解释为空值。