我最近问了一个关于pandas中缺失值的问题here并被定向到githubissue.在阅读了该页面和missingdatadocumentation.我想知道为什么merge和join当“它们不比较相等”时,将NaN视为匹配:np.nan!=np.nan#mergeexampledf=pd.DataFrame({'col1':[np.nan,'match'],'col2':[1,2]})df2=pd.DataFrame({'col1':[np.nan,'nomatch'],'col3':[3,4]})pd.merge(df,df2,on='col1')col1col2col30NaN
我在使用pandasgroupby时遇到问题带有分类数据。从理论上讲,它应该非常高效:您通过整数而不是字符串进行分组和索引。但它坚持认为,当按多个类别进行分组时,每个类别组合都必须考虑在内。即使常见字符串的密度很低,我有时也会使用类别,这仅仅是因为这些字符串很长,而且可以节省内存/提高性能。有时每列中有数千个类别。当按3列分组时,pandas强制我们保存1000^3组的结果。我的问题:有没有一种方便的方法可以将groupby与类别一起使用,同时避免这种不良行为?我不是在寻找这些解决方案中的任何一个:通过numpy重新创建所有功能。在groupby之前不断转换为字符串/代码,稍后恢复为类
我正在研究“用于数据分析的Python”,但我不了解特定功能。添加两个pandas系列对象将自动对齐索引数据,但如果一个对象不包含该索引,则返回为NaN。例如从书中:a=Series([35000,71000,16000,5000],index=['Ohio','Texas','Oregon','Utah'])b=Series([NaN,71000,16000,35000],index=['California','Texas','Oregon','Ohio'])结果:In[63]:aOut[63]:Ohio35000Texas71000Oregon16000Utah5000In[64
谁能向我解释以下行为?>>>importnumpyasnp>>>{np.nan:5}[np.nan]5>>>{float64(np.nan):5}[float64(np.nan)]KeyError:nan为什么它在第一种情况下有效,而在第二种情况下无效?此外,我发现以下确实有效:>>>a={a:5}[a]float64(np.nan) 最佳答案 这里的问题是NaN不等于它自己,正如IEEEfloat标准中定义的那样:>>>float("nan")==float("nan")False当字典查找一个键时,它大致是这样的:计算要查找的键
我有由多列组成的每小时数据。第一列是日期(date_log),其余列包含不同的样本点。问题是采样点使用不同的时间记录,即使是每小时,所以每列至少有几个NaN。如果我使用第一个代码进行绘制,它可以很好地工作,但我希望在一天左右没有记录器数据的情况下存在间隙,并且不希望将这些点连接起来。如果我使用第二个代码,我可以看到差距,但由于NaN点,数据点没有得到连接。在下面的示例中,我只绘制了前三列。当存在像蓝点这样的大差距时(01/06-01/07/2015),我希望有一个差距,然后将积分加入。第二个例子没有加入点。我喜欢第一个图表,但是当24小时日期范围内没有样本数据点等时,我想像第二种方法一
我使用的是python2.7.3和Pandas版本0.12.0。我想删除带有NaN索引的行,以便我只有有效的site_id值。printdf.head()special_namesite_idNaNBananaOMGAppledf.drop(df.index[0])TypeError:'NoneType'objectisnotiterable如果我尝试删除一个范围,如下所示:df.drop(df.index[0:1])我收到此错误:AttributeError:'DataFrame'objecthasnoattribute'special_name' 最佳答
对于从x到y可能包含NaN的数字列表,我如何在0和1之间进行归一化,忽略NaN值(它们保持为NaN)。通常我会使用sklearn.preprocessing中的MinMaxScaler(refpage),但这不能处理NaN并建议根据在平均值或中位数等方面,它不提供忽略所有NaN值的选项。 最佳答案 考虑pd.Seriesss=pd.Series(np.random.choice([3,4,5,6,np.nan],100))s.hist()选项1最小最大缩放new=s.sub(s.min()).div((s.max()-s.min()
在numpy中有nan、NaN和NAN。拥有这三个是什么意思,它们有什么不同还是可以互换使用? 最佳答案 >>>numpy.nanisnumpy.NaNisnumpy.NANTrue这很方便。它们完全一样。 关于python-nan、NaN和NAN有什么区别,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/17825707/
这是我的数据框:dateids02011-04-23[0,1,2,3,4,5,6,7,8,9,10,11,12,13,...12011-04-24[0,1,2,3,4,5,6,7,8,9,10,11,12,13,...22011-04-25[0,1,2,3,4,5,6,7,8,9,10,11,12,13,...32011-04-26Nan42011-04-27[0,1,2,3,4,5,6,7,8,9,10,11,12,13,...52011-04-28[0,1,2,3,4,5,6,7,8,9,10,11,12,13,...我想用[]替换Nan。怎么做?Fillna([])不起作用。我什
我正在尝试在pandas中做我认为是直截了当的操作,但我似乎无法让它发挥作用。我有两个具有不同索引数量的Pandas系列,如果它们共享一个索引,我想将值加在一起,否则我只想传递没有对应索引的值。例如Sr1=pd.Series([1,2,3,4],index=['A','B','C','D'])Sr2=pd.Series([5,6],index=['A','C'])Sr1Sr2A1A5B2C6C3D4Sr1+Sr2或Sr1.add(Sr2)给A6BNaNC9DNaN但我想要的是A6B2C9D4Sr1的B和D值只是被传递。有什么建议吗? 最佳答案