我有一个名为print_df
的pandas数据帧,它从numpy记录数组tv
收集值。当我尝试在print_df
和tv.
之间进行链式赋值时,我得到了一些非常奇怪的行为
因此,我将记录数组转换成一个名为tv.
的数据帧,然后确保两个数据帧的列是等价的
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.
,这就是我确保显式命名所有列的原因
当然有更多的python方法来编写这段代码,但我首先希望在清理代码之前让chain赋值工作
目前没有回答
相关问题 更多 >
编程相关推荐