将两个DataFrames成对地与二进制函数组合

时间:2017-10-02 18:31:48

标签: python pandas dataframe

我有两个相同维度的表,并且如果将二元函数的结果应用于这两个表的相应单元格,则希望在每个单元格中创建第三个表格。例如:

$ t1
array([[0, 1],
       [2, 3]])

$ t2
array([["A", "B"],
       ["C", "D"]])

$ combine(t1, t2, lambda x, y: "{}-{}".format(x, y))
array([["0-A", "1-B"],
       ["2-C", "3-D"]])

换句话说,我想要一个通用版本的元素操作,如add,div等。听起来像一个简单的任务,但我找不到任何地方如何轻松地做到这一点。

2 个答案:

答案 0 :(得分:2)

假设列具有相同的名称,您可以使用x = -1:0.01:1; contour2d(x, 2*x, Heart, [0 0]); plot2d(x, heart_up(x), 2); plot2d([x1 x2], [y1 y2], -2);

var sku = "";  //to be passed to server when filled
    
    var cookie_info = {
        number_nights: number_nights_cookie,
        number_travelers: number_travelers_cookie,
        type_traveler: type_traveler_cookie,
        departure_date: departure_date_cookie,
        country: country_cookie
    };
    
    $.ajax({
         type: 'POST',
         url: 'https://azooree.com/wp-admin/php/sku-calculation.php',
         data: cookie_info,
         success: function(response) {               
            console.log('success', response);
            sku = response;
         },
         error: function() {
             console.log('error!');
             alert("[ERROR] Information lost, please try again. Thank you!");
         }
    });
    
    var basic = {
        info: sku + "LP" 
    };
df.apply

更一般地说:

df1.apply(lambda x: binary_function(x, df2[x.name]))

使用df1 0 1 0 0 1 1 2 3 df2 0 1 0 A B 1 C D df1.astype(str) + '-' + df2 0 1 0 0-A 1-B 1 2-C 3-D

df1.apply(lambda x: x.astype(str) + '-' + df2[x.name])
     0    1
0  0-A  1-B
1  2-C  3-D

答案 1 :(得分:1)

具有非对齐索引和列的DF的演示:

设定:

In [26]: d1 = pd.DataFrame(t1)

In [27]: d2 = pd.DataFrame(t2, index=[3,5], columns=['a','b'])

In [28]: d1
Out[28]:
   0  1
0  0  1
1  2  3

In [29]: d2
Out[29]:
   a  b
3  A  B
5  C  D

解决方案:

In [30]: d1.astype(str).add('-').add(d2.values)
Out[30]:
     0    1
0  0-A  1-B
1  2-C  3-D