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
。非常感谢,它可以工作。。。谢谢你的帮助