总结熊猫数据框中的两列

新手上路,请多包涵

当我使用此语法时,它会创建一个系列而不是向我的新数据框添加一列 sum

我的代码:

 sum = data['variance'] = data.budget + data.actual

我的数据 data 目前除了 budget - actual 列之外的所有内容。如何创建 variance 列?

     cluster  date                  budget  actual budget - actual
0   a        2014-01-01  00:00:00  11000   10000       1000
1   a        2014-02-01  00:00:00  1200    1000
2   a        2014-03-01  00:00:00  200     100
3   b        2014-04-01  00:00:00  200     300
4   b        2014-05-01  00:00:00  400     450
5   c        2014-06-01  00:00:00  700     1000
6   c        2014-07-01  00:00:00  1200    1000
7   c        2014-08-01  00:00:00  200     100
8   c        2014-09-01  00:00:00  200     300

原文由 yoshiserry 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 203
2 个回答

我想你误解了一些 python 语法,下面有两个任务:

 In [11]: a = b = 1

In [12]: a
Out[12]: 1

In [13]: b
Out[13]: 1

所以在你的代码中就好像你在做:

 sum = df['budget'] + df['actual']  # a Series
# and
df['variance'] = df['budget'] + df['actual']  # assigned to a column

后者为 df 创建一个新列:

 In [21]: df
Out[21]:
  cluster                 date  budget  actual
0       a  2014-01-01 00:00:00   11000   10000
1       a  2014-02-01 00:00:00    1200    1000
2       a  2014-03-01 00:00:00     200     100
3       b  2014-04-01 00:00:00     200     300
4       b  2014-05-01 00:00:00     400     450
5       c  2014-06-01 00:00:00     700    1000
6       c  2014-07-01 00:00:00    1200    1000
7       c  2014-08-01 00:00:00     200     100
8       c  2014-09-01 00:00:00     200     300

In [22]: df['variance'] = df['budget'] + df['actual']

In [23]: df
Out[23]:
  cluster                 date  budget  actual  variance
0       a  2014-01-01 00:00:00   11000   10000     21000
1       a  2014-02-01 00:00:00    1200    1000      2200
2       a  2014-03-01 00:00:00     200     100       300
3       b  2014-04-01 00:00:00     200     300       500
4       b  2014-05-01 00:00:00     400     450       850
5       c  2014-06-01 00:00:00     700    1000      1700
6       c  2014-07-01 00:00:00    1200    1000      2200
7       c  2014-08-01 00:00:00     200     100       300
8       c  2014-09-01 00:00:00     200     300       500

顺便说一句,您不应该使用 sum 作为变量名,因为它会覆盖内置的求和函数。

原文由 Andy Hayden 发布,翻译遵循 CC BY-SA 3.0 许可协议

df['variance'] = df.loc[:,['budget','actual']].sum(axis=1)

原文由 pylist 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题