Python pandas数据帧获取NaN而不是值

时间:2015-08-26 02:05:04

标签: python pandas dataframe

我有一个大型数据集,其中多列具有NaN值。我使用python pandas用平均值替换少数列中的缺失值,其余用中值替换。我摆脱了所有的NaN值,并将Dataframe的结果写入了一个新文件。

现在当我再次阅读新文件时,它包含NaN而不是值。我无法弄清楚为什么会这样。以下是我的参考代码:

df = pd.DataFrame.from_csv('temp_train.csv',header=0)
df.prop_review_score=df.prop_review_score.fillna(0)
mean_score_2 = np.mean(df.prop_location_score2)
df.prop_location_score2 = df.prop_location_score2.fillna(mean_score_2)
median_search_query = np.median(df.srch_query_affinity_score)
df.srch_query_affinity_score = df.srch_query_affinity_score.fillna(median_search_query)
median_orig_distance = np.median(df.orig_destination_distance)
df.orig_destination_distance = df.orig_destination_distance.fillna(median_orig_distance)
df.to_csv('final_train_data.csv')

现在,在我输入以下内容的另一个脚本中,我在NaNs

中获得了srch_query_affinity_score
df = pd.DataFrame.from_csv('final_train_data.csv',header=0)
print df

1 个答案:

答案 0 :(得分:0)

我建议在数据框上使用pandas.DataFrame.median而不是numpy.median

对我的快速测试显示(当Woody建议的数据中存在NaN时):

df = pd.DataFrame({'x':[10,pd.np.NAN,np.NAN,20]}) df.x.median() # returns 20.0 np.median(df.x) # returns NaN

所以考虑更换:

median_search_query = np.median(df.srch_query_affinity_score)median_search_query = df.srch_query_affinity_score.median()

为了确保在你去csv之前做一些事情:

assert df.srch_query_affinity_score.isnull().sum() == 0