我有一个名为print_df
的pandas数据框,它从numpy记录数组tv
收集值。当我尝试在print_df
和tv.
所以我将记录数组转换为一个名为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方法,但我首先想要在清理代码之前使链分配工作。