.loc切片KeyError(f“ [{key}]都不在[{axis_name}]中”)

时间:2020-09-25 14:55:29

标签: python pandas dataframe datetime

所以我最初的问题是一个SettingwithCopyWarning,当我开始遇到这个关键错误时,我正试图解决它。原始(预期代码)为:

df['Dates'] = pd.to_datetime(df['Dates'])

这是可行的,但给了我在切片上设置副本的警告(确切的警告是:试图在DataFrame的切片副本上设置值。尝试使用.loc [row_indexer,col_indexer] = value代替...)

因此,我尝试修复它:

df['Date'] = pd.to_datetime(df.loc[df['Date'],])

还有这个:

pd.to_datetime(df.loc[df['Date'],])

谁给我这个新警告:

KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Index(['10/1/2020', '10/1/2020', '10/1/2020', '10/1/2020', '10/1/2020',\n...dtype='object')] are in the [index]"

我也尝试使用该列,但出现语法错误:

df['Date'] = pd.to_datetime(df.loc[,df['Date']])

SyntaxError: invalid syntax

我真的很困惑,试图避免我的代码完全破坏应该将Date列中的字符串值转换为datetime格式的简单方法,以便我对其进行排序或过滤。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,问题在作业的左侧。警告说,它不能保证您的分配会更改df。右边的所有计算都可以。

df['Date']重写loc的正确方法是df.loc[:, 'Date']。令人困惑的是,对于loc,方括号中的第一个值负责行而不是列。您需要编写:来表明您想要获取所有行。比逗号和您想要的列。

所以最终的代码是:

df.loc[:, 'Date'] = pd.to_datetime(df['Dates'])