我使用以下语法创建了一个零数据框:
ltv = pd.DataFrame(data=np.zeros([actual_df.shape[0], 6]),
columns=['customer_id',
'actual_total',
'predicted_num_purchases',
'predicted_value',
'predicted_total',
'error'], dtype=np.float32)
完全符合预期
customer_id | actual_total | predicted_num_purchases | predicted_value | predicted_total | error
0 0.0 0.0 0.0 0.0 0.0 0.0
1 0.0 0.0 0.0 0.0 0.0 0.0
2 0.0 0.0 0.0 0.0 0.0 0.0
当我运行以下语法时:
ltv['customer_id'] = actual_df['customer_id']
我得到所有NaN ltv['customer_id']
。是什么原因造成的?如何防止这种情况发生?
注意:我也检查过actual_df
,里面没有NaN
两者都需要相同的索引值(并且两个DataFrame的长度也需要相同)。
因此,第一个解决方案是RabgeIndex
在actual_df
中ltv
指定default ,在in中未指定,因此默认情况下创建:
actual_df = actual_df.reset_index(drop=True)
ltv['customer_id'] = actual_df['customer_id']
或index
向DataFrame
构造函数添加参数:
ltv = pd.DataFrame(data=np.zeros([actual_df.shape[0], 6]),
columns=['customer_id',
'actual_total',
'predicted_num_purchases',
'predicted_value',
'predicted_total',
'error'], dtype=np.float32,
index=actual_df.index)
ltv['customer_id'] = actual_df['customer_id']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句