【发布时间】:2016-01-19 20:56:46
【问题描述】:
我有许多数据框,它们都包含标记为“日期”和“成本”的列以及其他列。我想根据排列“日期”列中的日期,在不同框架的“成本”列中添加数字数据,以提供每个日期的总成本时间序列。
每个数据帧中有不同数量的行。
这似乎是 Pandas 应该非常适合做的事情,但我找不到干净的解决方案。
任何帮助表示赞赏!
这里有两个数据框:
df1:
Date Total Cost Funded Costs
0 2015-09-30 724824 940451
1 2015-10-31 757605 940451
2 2015-11-15 788051 940451
3 2015-11-30 809368 940451
df2:
Date Total Cost Funded Costs
0 2015-11-30 3022 60000
1 2016-01-15 3051 60000
我想让结果数据框有五行(有五个不同的日期)和一列,其中包含每个数据框的“总成本”列的总数。最初我使用以下内容:
totalFunding = df1['Total Cost'].values + df2['Total Cost'].values
在每个数据框中都有不同的日期之前,这一直很好。
谢谢!
下面发布的解决方案效果很好,除了我需要递归地执行此操作,因为我有许多数据框。我创建了以下函数:
def addDataFrames(f_arg, *argv):
dfTotal = f_arg
for arg in argv:
dfTotal = dfTotal.set_index('Date').add(arg.set_index('Date'), fill_value = 0)
return dfTotal
添加前两个数据帧时效果很好。但是,加法方法似乎将我的 Date 列转换为结果总和中的索引,因此随后通过函数失败。以下是前两个数据框相加后 dfTotal 的样子:
Total Cost Funded Costs Remaining Cost Total Employee Hours
Date
2015-09-30 1449648 1880902 431254 7410.6
2015-10-31 1515210 1880902 365692 7874.4
2015-11-15 1576102 1880902 304800 8367.2
2015-11-30 1618736 1880902 262166 8578.0
2015-12-15 1671462 1880902 209440 8945.2
2015-12-31 1721840 1880902 159062 9161.2
2016-01-15 1764894 1880902 116008 9495.0
请注意,数据框中最初称为“日期”的列现在被列为索引,导致 df.set_index('日期') 在随后通过我的函数时生成错误。
【问题讨论】:
-
发布代表性数据、创建 dfs 的代码、您的尝试以及所需的输出