使用字典将列相乘,例如参考熊猫

时间:2018-06-26 13:14:31

标签: python pandas dataframe reference name-binding

我有一个像这样的数据框,我想用熊猫将行乘以另一个数据框中的引用值。之后,我想添加这些行中的所有产品并将其存储在称为Pro_Sum的列中。我知道Python不会通过引用传递任何东西,但是我可以在这里进行名称绑定,因此我试图创建一个字典来根据其名称乘以值,但是我没有成功。

df = pd.read_excel (C:/"dummy")
d = {"C1": 2, "C2": 5,"C3":4, "C4":1}
df.mul(pd.Series(d), axis=1)

prod = d.keys() 
df[prod] = df[prod].mul(pd.Series(d), axis=1)[prod]
to_sum_t = list(df)
#.sum ignores the none numeric values.
df['Pro_sum'] = df[to_sum_t].sum(axis=1)

输入

ID  AU  HP  Name1   Value1  CHC1    Name2 Value2 CHC2   Name3 Value3 CHC3 
1   4   3   C1        10    100      0      0       0     0      0      0       
2   6   2   C2        20    95      C1      6       5     0      0      0    
3   2   7   C3        4     40      C4      6       60    0      0      0   
4   8   9   C1        8     100      0      0       0     0      0      0    
5   2   6   C1        6     10      C2      15      86   C4      1      4    

参考列

Names Values
  C1    2
  C2    5
  C3    4
  C4    1
  Example row 5 Pro_Sum = 6*2 + 15*5 + 1*1 = 88

最小输出

ID  AU  HP  Name1 Value1 CHC1   Name2 Value2 CHC2   Name3 Value3 CHC3 Pro_Sum
1   4   3   C1      10    100      0    0     0       0      0      0    20 
2   6   2   C2      20    95      C1    6     5       0      0      0    112
5   2   6   C1       6    10      C2    15    86      C4     1      4    88

1 个答案:

答案 0 :(得分:1)

我认为按名称需要filter列,按字典需要replace值,并按values,倍数,求和并分配给新列将其转换为numpy数组:

function getPosts(page) {
        $.ajax({
            url : '?page=' + page,
            dataType: 'json',
        }).done(function (data) {
            $('.posts').html(data);
            //bind again
            $("#select").on("change", function() {
                alert();
            });
            location.hash = page;
        }).fail(function () {
            alert('Posts could not be loaded.');
        });
}