今天想把不同长度的DataFrames上下合并起来,结果发现短的一行DataFrame在缺省处也有了数据,不是NaN,而且这部分数据和仅有的那部分一模一样。单步运行调试观察,发现是由于列索引columns没有设置好造成的。我要存的数据是许多方阵,其中第一大行有2个方阵,第二大行有1个方阵。对第一大行第1个方阵列索引命名为['q1', ' ', ' ', ...](方阵阶数为n,则希望第一个索引为q1,之后的n-1个都为空格,后同),对第一大行第2个方阵列索引命名为['q2', ' ', ' ', ...];对第二大行第1个(也是唯一一个)方阵列索引命名为['q1', ' ', ' ', ...]。则在用concat进行上下合并时,由于第二大行中的空格部分索引和第一大行的第2个方阵列索引空格部分相同,所以在把第二大行方阵加到第一大行第1个方阵底下的同时,也会把这部分加到第一大行第2方阵底下,使第二大行里会有2大块相同的数据。
解决:对列索引进行更详细的命名,如第一大行第1个方阵列索引命名为['q1, 1', 'q1, 2 ', ' q1, 3', ...],第一大行第2个方阵列索引命名为['q2, 1', 'q2, 2 ', ' q2, 3', ...],这样就可以对应着合并了,没有数据的地方用NaN补充。