Python 3.x ';数据帧';对象没有属性';dt';
我陷入了这个错误,我想减去两个日期,得到的差值为天 我总是收到下面的错误 这是数据帧信息Python 3.x ';数据帧';对象没有属性';dt';,python-3.x,pandas,Python 3.x,Pandas,我陷入了这个错误,我想减去两个日期,得到的差值为天 我总是收到下面的错误 这是数据帧信息 正如@EdChum上面所说,.dt是pd.DataFrame属性,而不是pd.Series方法。如果要获取日期差,请使用pd.Dataframe方法。发生这种情况的原因是您有pd.MultiIndex列标题。我可以从pd.DataFrame.info()结果中看出,在列名中使用元组表示多索引列标题 请参见下面的示例: df = pd.DataFrame(np.random.randint(100,999,
正如@EdChum上面所说,.dt是pd.DataFrame属性,而不是pd.Series方法。如果要获取日期差,请使用pd.Dataframe方法。发生这种情况的原因是您有pd.MultiIndex列标题。我可以从pd.DataFrame.info()结果中看出,在列名中使用元组表示多索引列标题 请参见下面的示例:
df = pd.DataFrame(np.random.randint(100,999,(5,5))) #create a dataframe
df.columns = pd.MultiIndex.from_arrays([['A','B','C','D','E'],['max','min','max','min','max']])
#create multi index column headers
type(df['A'] - df['E'])
输出:
pandas.core.frame.DataFrame
pandas.core.series.Series
注意返回的类型,即使从另一列减去一列。您需要一个pd.Series,但这将返回一个数据帧
你有几个选择来解决这个问题
选择1使用:
选项2:在执行以下操作之前展平列标题:
输出:
pandas.core.frame.DataFrame
pandas.core.series.Series
现在,您可以将.dt datetime访问器应用于您的系列<代码>类型对于了解正在使用的对象很重要。不要发布图像链接,发布代码的原始文本和错误。这里的错误是,一个系列有一个
.dt
属性,而数据帧没有,您需要对一个列而不是数据帧调用.dt
。非常感谢,它可以工作。。。谢谢你的帮助