繁体   English   中英

Python熊猫数据框获取NaN而不是值

[英]Python pandas dataframe getting NaN instead of values

我有一个很大的数据集,其中多个列具有NaN值。 我用python pandas分别用均值替换了几列中的缺失值,其余部分用中位数替换了。 我摆脱了所有的NaN值,并将结果数据框写入了一个新文件。

现在,当我再次读取新文件时,它包含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')

现在在另一个脚本中,当我输入以下内容时,我在srch_query_affinity_score获得NaNs

df = pd.DataFrame.from_csv('final_train_data.csv',header=0)
print df

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

对我来说,这是一个快速测试(如伍迪建议,当数据中存在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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM