熊猫写NaN然后从一个数据帧到另一个数据帧的链分配

时间:2016-08-03 04:36:20

标签: python pandas dataframe

我有一个名为print_df的pandas数据框,它从numpy记录数组tv收集值。当我尝试在print_dftv.

之间进行连锁分配时,我会遇到一些非常奇怪的行为

所以我将记录数组转换为一个名为tv.的pandas Dataframe然后我确保两个数据帧的列是等价的。

      for idx in range(number_of_runs):
        tv = pd.DataFrame(self.res_array['run'][idx], dtype='float64')
        tv.columns = ['year',
                        'f1',
                        'f2',
                        'f3',
                        'm1',
                        'm2',
                        'm3']

        print_df.ix[(idx * self.duration):(idx * self.duration +
                                          self.duration - 1), 0] = idx
        print_df.ix[(idx * self.duration):(idx * self.duration +
                                         self.duration - 1), 1:] = tv

以下是一些示例数据。

         year    f1   f2    f3    m1    m2     m3 
    0    0.0  14.0  3.0  19.0  37.0  28.0  239.0   
    1    1.0  13.0  6.0  20.0  38.0  25.0  238.0        
    2    2.0  12.0  8.0  20.0  40.0  23.0  239.0       
    3    3.0  13.0  9.0  21.0  40.0  22.0  238.0      
    4    4.0  16.0  9.0  21.0  38.0  22.0  239.0 

赋值适用于第一次迭代,但所有后续迭代都会在print_df数据帧中生成NaN。两个数据帧的大小是等价的,所以没有问题。我也尝试使用基于索引的选择.iloc,但这没有什么区别。

我还认为tv中的列名可能导致错误,因为有一列被调用index.这就是我确保明确命名所有列的原因。

编写此代码肯定有更多pythonic方法,但我首先想要在清理代码之前使链分配工作。

0 个答案:

没有答案