TypeError: DataFrame.drop()接受1到2个位置参数,但提供了3个。

huangapple go评论82阅读模式
英文:

TypeError: DataFrame.drop() takes from 1 to 2 positional arguments but 3 were given

问题

以下是翻译好的部分:

我有一个大文件,我试图使用 dataframe.drop 函数来减小它的大小。以下是我的代码:

probe_df = pd.read_csv(csv_file, header=9233, nrows=4608)
# 去除不需要的列
c_to_drop = 'Unnamed: ' + str(count_tp+1)
probe_df = probe_df.set_index("Chamber ID").drop(c_to_drop, 1)

当我运行这个代码时,我收到了以下错误信息:

probe_df = probe_df.set_index("Chamber ID").drop(c_to_drop, 1)
TypeError: DataFrame.drop() 接受 12 个位置参数但给定了 3

我不明白为什么会出现这个错误以及如何修复它。请帮助我!

我是新手,尝试在网上寻找解决方案,但我还是相当新,没有找到与我的问题完全匹配的内容。

英文:

I have a large file that I'm trying to reduce using dataframe.drop
Here's my code:

probe_df = pd.read_csv(csv_file,header = 9233, nrows = 4608)
# Get rid of stuff
c_to_drop = 'Unnamed: ' + str(count_tp+1)
probe_df = probe_df.set_index("Chamber ID").drop(c_to_drop,1)

When I ran this, I got this error message:

probe_df = probe_df.set_index("Chamber ID").drop(c_to_drop,1)
TypeError: DataFrame.drop() takes from 1 to 2 positional arguments but 3 were given

I don't understand why I got the error and how to fix it. Please help!

I'm a newbie and I tried looking online for a solution but I'm still quite new and didn't see anything that matched my issue exactly.

答案1

得分: 2

根据pandas文档drop函数的源代码如下:

DataFrame.drop(labels=None, *, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

*代表了允许的位置参数的结束。这表明位置参数应该是labels,而对于Python的错误消息,这可能来自于未直接显示的self位置参数,因为它是隐式提供的。

因此,执行probe_df = probe_df.set_index("Chamber ID").drop(c_to_drop, 1)将向一个只接受1个位置参数(不包括self)的函数中传入2个位置参数。

通过将其更改为probe_df.set_index("Chamber ID").drop(c_to_drop, axis=1),我们将1从位置参数转换为函数所需的关键字参数。

英文:

According to the pandas documentation, the source for drop would be

> DataFrame.drop(labels=None, *, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

The * represents the end of allowed positional arguments. This indicates that the positional arguments would be labels, and for python's error message this would likely be from the self positional argument that is not directly shown as it is implicitly supplied.

Therefore, doing probe_df = probe_df.set_index("Chamber ID").drop(c_to_drop,1) would be feeding 2 positional arguments into a function which only takes 1 (not including self).

By changing it to probe_df.set_index("Chamber ID").drop(c_to_drop, axis=1), we convert the 1 from a positional argument to a keyword argument as required by the function.

huangapple
  • 本文由 发表于 2023年6月6日 10:21:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/76411055.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定