我的数据框有Date列和year作为值,我想显示长度,但显示为nan。
剧本:
dataAll['Date'].unique()
Output: array([2012, 2013, 2014, 2015, 2016, 2011, 2007, 2008, 2009, 2010, 2002,2003, 2004, 2005, 2006, 2017, 2001, 2000], dtype=object)
dataAll['Date'].str.len().unique()
Output: array([ nan])
答案 0 :(得分:1)
所以......让我们说我试着重新创建你的例子。
years= [2012, 2013, 2014, 2015, 2016, 2011, 2007, 2008, 2009, 2010, 2002, 2003, 2004, 2005, 2006, 2017, 2001, 2000]
years = [str(x) for x in years]
dataAll = pd.DataFrame({'Date':years})
dataAll['Date'].str.len().unique()
Out[63]: array([4], dtype=int64)
换句话说,代码按预期工作,但dataAll.Date中的数据不是字符串。
现在我将完全相同,但使用不同的数据表示,这将失败两次:
years= [2012, 2013, 2014, 2015, 2016, 2011, 2007, 2008, 2009, 2010, 2002, 2003, 2004, 2005, 2006, 2017, 2001, 2000]
dataAll = pd.DataFrame({'Date':years})
dataAll['Date'].str.len().unique()
Out[68]: AttributeError: Can only use .str accessor with string values, which use np.object_ dtype in pandas
years= [2012, 2013, 2014, 2015, 2016, 2011, 2007, 2008, 2009, 2010, 2002, 2003, 2004, 2005, 2006, 2017, 2001, 2000]
dataAll = pd.DataFrame({'Date':years}, dtype=object)
dataAll['Date'].str.len().unique()
Out[73]: array([ nan])
修复:
dataAll.Date = dataAll.Date.astype(str)
dataAll['Date'].str.len().unique()
Out[75]: array([4], dtype=int64)