pandas在循环时将数据合并/连接到数据帧

时间:2017-09-01 08:12:39

标签: python pandas join merge

我正在尝试在循环浏览帐户时将数据合并或加入df。

首先,我设置了一个由所有月份索引的空数据框:

Empty DataFrame
Columns: []
Index: [2014-09-30, 2014-09-30, 2014-10-31, 2014-10-31, 2014-11-30, 2014-11-30, 2014-12-31, 2015-01-31, 2015-02-28, 2015-03-31]

接下来,我遍历所有帐户,将值添加到数据框中。

for a in accts:

        cf = Cashflow.objects.all ().filter ( id = a.id ).order_by ( 'month' ).values ( 'month', 'value' )

        df2 = read_frame ( cf )
        df2 = df2.set_index ( 'month' )

        df = pd.merge ( df2, how = 'left', left_index = True, right_index = True )

但我的输出中有重复的数据:

month                        
2014-09-30   535400  122928.0
2014-09-30   535400  122928.0
2014-10-31   530719  107389.0
2014-10-31   530719  107389.0
2014-11-30   512009   97654.0
2014-11-30   512009   97654.0
2014-12-31   482277       0.0
2015-01-31   474815       0.0

我尝试过不同的解决方案。

我可以删除重复的行,但这只是坏代码的补丁。

这是最好的方法吗?它应该是一个连接而不是合并吗?

2 个答案:

答案 0 :(得分:1)

您为自己开始使用的空数据库创建的索引中有重复的日期。为什么呢?

答案 1 :(得分:1)

您的指数中有重复项。

您可以按df.drop_duplicates()

删除它们