关于熊猫条件计算的问题

时间:2020-01-22 16:48:43

标签: python pandas jupyter-notebook conditional-statements

我有这个公式,我想将其转换为熊猫计算, 公式很简单: NEW = A(where v=1) + A(where v=3) + A(where v=5)

我有一个像这样的数据框:

Type subType value   A           NEW
 X    a       1      3         =3+9+9=21
 X    a       3      9  
 X    a       5      9
 X    b       1      4         =4+5+0=9
 X    b       3      5 
 X    b       5      0
 Y    a       1      1         =1+2+3=6
 Y    a       3      2  
 Y    a       5      3
 Y    b       1      4         =4+5+2=11
 Y    b       3      5 
 Y    b       5      2

两个问题:

  1. 我知道我可以只记录指定单元格的计算,但是我希望代码看起来更好,是否还有其他获取值的方法?

  2. 由于X和Y只有两个结果,如何将它们添加到原始数据框中以进行进一步计算? (我的想法是不要将它们添加到数据框中,而仅在以后需要计算时使用该值) 编码非常新,任何答案将不胜感激!

1 个答案:

答案 0 :(得分:2)

尝试一下:

jasmine.getEnv().addReporter(new AllureReporter({
      resultsDir: 'allure-results'
    }));
    jasmine.getEnv().afterEach(function (done) {
      browser.takeScreenshot().then(function (png) {
        allure.createAttachment(exports.config.multiCapabilities.name, function () {
          return new Buffer(png, 'base64')
        }, 'image/png')();
        done();
      })
    });
  }

希望这会有所帮助。

编辑以回答其他查询:

您正在将元组键映射到一个序列,这将给您带来错误。在执行映射之前,应将需要将字典映射到索引的列移动为索引。

见下文:

>>> import pandas as pd
>>> df = pd.DataFrame({'Type':['X','X','X','Y','Y','Y'], 'value':[1,3,5,1,3,5], 'A':[3,9,4,0,2,2]})

>>> df
  Type  value  A
0    X      1  3
1    X      3  9
2    X      5  4
3    Y      1  0
4    Y      3  2
5    Y      5  2

>>> df.groupby('Type')['A'].sum()
Type
X    16
Y     4

>>> ur_dict = df.groupby('Type')['A'].sum().to_dict()
>>> df['NEW'] = df['Type'].map(ur_dict)
>>> df
  Type  value  A  NEW
0    X      1  3   16
1    X      3  9   16
2    X      5  4   16
3    Y      1  0    4
4    Y      3  2    4
5    Y      5  2    4