Can*_*ice 42 python dataframe pandas
下面的代码:
df = df.drop('market', 1)
Run Code Online (Sandbox Code Playgroud)
生成警告:
FutureWarning:在 pandas 的未来版本中,除了参数“labels”之外,DataFrame.drop 的所有参数都将仅是关键字
market是我们要删除的列,我们将其1作为轴的第二个参数传递(0 表示索引,1 表示列,因此我们传递 1)。
现在我们如何更改这行代码,以便在以后的 pandas / 版本中不再出现问题来解决现在的警告消息?
Hen*_*ker 47
从文档来看,pandas.DataFrame.drop有以下参数:
参数
\n\n\n\n
\n- \n
labels:要删除的单个标签或类似列表的索引或列标签。
\n- \n
axis : {0 或 \xe2\x80\x98index\xe2\x80\x99, 1 或 \xe2\x80\x98columns\xe2\x80\x99}, 默认 0 是否从索引中删除标签(0 或 \xe2\x80 \x98index\xe2\x80\x99) 或列(1 或 \xe2\x80\x98columns\xe2\x80\x99)。
\n- \n
指数:单个标签或类似列表指定轴的替代方案(标签,axis=0 相当于index=labels)。
\n- \n
列:单个标签或类似列表的替代指定轴(标签,axis=1 相当于columns=labels)。
\n- \n
等级 : int 或级别名称,可选 对于 MultiIndex,将删除标签的级别。
\n- \n
到位:bool,默认 False 如果为 False,则返回副本。否则,就地操作并返回 None。
\n- \n
错误:{\xe2\x80\x98ignore\xe2\x80\x99,\xe2\x80\x98raise\xe2\x80\x99},默认\xe2\x80\x98raise\xe2\x80\x99 如果\xe2\x80\x98ignore \xe2\x80\x99,抑制错误并仅删除现有标签。
\n
不断前行,唯有labels(第一个参数)可以是位置的。
因此,对于这个例子,drop代码应该如下:
df = df.drop(\'market\', axis=1)\nRun Code Online (Sandbox Code Playgroud)\n或者(更清晰地)与columns:
df = df.drop(columns=\'market\')\nRun Code Online (Sandbox Code Playgroud)\n
U10*_*ard 17
出现此警告的原因是,在未来的版本中,pandas 可能*args会将**kwargs.
所以这意味着axis需要指定,所以尝试:
df.drop('market', axis=1)
Run Code Online (Sandbox Code Playgroud)
正如文档中提到的:
**kwargs 允许您将带关键字的可变长度参数传递给函数。如果你想在函数中处理命名参数,你应该使用 **kwargs。
另外,最近有了新版本(从 0.21.0 开始),您可以只指定columns或index像这样:
df.drop(columns='market')
Run Code Online (Sandbox Code Playgroud)
在这里查看更多内容。