大熊猫提供的最佳方法是组合许多数据帧,并对重叠的行和列进行值的数学加法吗?
我有一长串重叠的数据帧,看起来像这样(这只显示了其中的3个):
>>> df1
xcode ycode
n
17 1 0
18 1 0
19 1 0
20 1 0
21 1 0
389 1 0
390 1 0
391 1 0
392 1 0
393 1 0
394 1 0
>>> df2
xcode ycode
n
58 1 0
59 1 0
60 1 0
61 1 0
62 1 0
610 1 0
611 1 0
612 1 0
613 1 0
614 1 0
615 1 0
>>> df3
xcode ycode
n
21 0 1
22 0 1
23 0 1
24 0 1
25 0 1
26 0 1
27 0 1
28 0 1
29 0 1
30 0 1
31 0 1
32 0 1
33 0 1
34 0 1
35 0 1
36 0 1
37 0 1
38 0 1
39 0 1
40 0 1
41 0 1
42 0 1
43 0 1
44 0 1
45 0 1
46 0 1
47 0 1
48 0 1
49 0 1
50 0 1
51 0 1
52 0 1
53 0 1
54 0 1
55 0 1
56 0 1
57 0 1
58 0 1
我可以将它们组合起来,以下面的方式将重叠的行和列中的值加在一起,但这是一长段代码:
>>> pd.DataFrame().add(df1, fill_value=0).add(df2, fill_value=0).add(df3, fill_value=0)
xcode ycode
n
17 1 0
18 1 0
19 1 0
20 1 0
21 1 1 # Note the overlapping index
389 1 0
390 1 0
391 1 0
392 1 0
393 1 0
394 1 0
58 1 1 # Note the overlapping index
59 1 0
60 1 0
61 1 0
62 1 0
610 1 0
611 1 0
612 1 0
613 1 0
614 1 0
615 1 0
22 0 1
23 0 1
24 0 1
25 0 1
26 0 1
27 0 1
28 0 1
29 0 1
30 0 1
31 0 1
32 0 1
33 0 1
34 0 1
35 0 1
36 0 1
37 0 1
38 0 1
39 0 1
40 0 1
41 0 1
42 0 1
43 0 1
44 0 1
45 0 1
46 0 1
47 0 1
48 0 1
49 0 1
50 0 1
51 0 1
52 0 1
53 0 1
54 0 1
55 0 1
56 0 1
57 0 1
我可以使用循环或reduce
做同样的事情。但是熊猫图书馆提供了更好的方法吗?
(我进行了搜索,但找不到类似的问题;其他问题具有相同的索引,或者仅添加了两个数据框。)
答案 0 :(得分:2)
将pd.concat
和sum
与level=0
一起使用。
>>> pd.concat([df1, df2, df3]).sum(level=0)
xcode ycode
n
17 1 0
18 1 0
19 1 0
20 1 0
21 1 1
389 1 0
390 1 0
391 1 0
392 1 0
393 1 0
394 1 0
58 1 1
59 1 0
60 1 0
61 1 0
62 1 0
610 1 0
611 1 0
612 1 0
613 1 0
614 1 0
615 1 0
22 0 1
23 0 1
24 0 1
25 0 1
26 0 1
27 0 1
28 0 1
29 0 1
30 0 1
31 0 1
32 0 1
33 0 1
34 0 1
35 0 1
36 0 1
37 0 1
38 0 1
39 0 1
40 0 1
41 0 1
42 0 1
43 0 1
44 0 1
45 0 1
46 0 1
47 0 1
48 0 1
49 0 1
50 0 1
51 0 1
52 0 1
53 0 1
54 0 1
55 0 1
56 0 1
57 0 1
答案 1 :(得分:-1)
您应该能够使用标准的python运算符:
$(document).ready(function() {
$('select.countForShowerCoins').on('change', function() {
var sum = 0;
$('select :selected').each(function() {
sum += Number($(this).val() * 3);
});
if (sum > 0) {
sum *= $('select[name=howManyNights]').val();
}
$(".result").html(sum);
});
});
或
sum([df1, df2, df3])