python - 添加许多具有重叠索引和列的 pandas 数据框

标签 python arrays pandas

pandas 提供的组合多个数据帧并在重叠的行和列处执行值的数学加法的最佳方法是什么?

我有一长串重叠的数据帧,如下所示(仅显示其中 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来做同样的事情。但是 pandas 库是否提供了更好的方法来做到这一点?

(我进行了搜索,但找不到类似的问题;其他问题要么具有相同的索引,要么只添加了几个数据帧。)

最佳答案

使用 pd.concatsum 以及 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

关于python - 添加许多具有重叠索引和列的 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59203866/

相关文章:

java - 从循环中将 null 放入数组

PHP:这是一个错误吗:shuffle() 期望参数 1 是数组,给定对象?

python - 如何将一列字符串转换为数字?

python - 减少嵌套列表,扩展或 append 列表的功能

arrays - 如何根据同时适用于不同列的条件提取矩阵的行?

python - 改进或消除mysql COUNT的方法

python - 减去数据框的最佳方法

python - 重新索引不完整的多级数据框中的第二级以使其完整,在缺失的行上插入 NAN

python - if 和 elif 在模板 django 中不起作用

python - Django 模型定义排序