【问题标题】:TypeError: copy() takes no keyword arguments in Python 3.xTypeError: copy() 在 Python 3.x 中不接受关键字参数
【发布时间】:2020-05-17 01:36:21
【问题描述】:

在过去的几个月里,我一直在使用以下代码行没有问题:

a['Area Code']=a['mpan'].str[:2]
a.groupby(a['Area Code'])
a=a[a['Area Code'].astype(int)<=23]

data_list=a.groupby('Area Code')[['mpan']].apply(lambda g: list (map(tuple, g.values.tolist()))).to_dict()

突然间,我从最后一行遇到以下错误:

TypeError: copy() takes no keyword arguments

'a' 是一个 (23,2) 数据框,已按名为“区号”的列分组(并由 SQL 查询填充)。 'data_list' 是一个使用 'Area Code' 列作为键的字典。我有点困惑为什么错误涉及 copy() 而它本身并不在行中。

我对 Python 还是很陌生,并且获得了有关特定行的帮助,因此不确定其基本性质。

Traceback (most recent call last):

  File "C:\ProgramData\Anaconda3\lib\site- 
  packages\pandas\core\groupby\groupby.py", line 735, in apply
  result = self._python_apply_general(f)

  File "C:\ProgramData\Anaconda3\lib\site- 
  packages\pandas\core\groupby\groupby.py", line 751, in _python_apply_general
  keys, values, mutated = self.grouper.apply(f, self._selected_obj, self.axis)

  File "C:\ProgramData\Anaconda3\lib\site- 
  packages\pandas\core\groupby\ops.py", line 171, in apply
  result_values, mutated = splitter.fast_apply(f, group_keys)

  File "C:\ProgramData\Anaconda3\lib\site- 
  packages\pandas\core\groupby\ops.py", line 925, in fast_apply
  return libreduction.apply_frame_axis0(sdata, f, names, starts, ends)

  File "pandas\_libs\reduction.pyx", line 505, in 
  pandas._libs.reduction.apply_frame_axis0

  TypeError: copy() takes no keyword arguments

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):

  File "<ipython-input-31-84e07b1b1635>", line 1, in <module>
  a.groupby('Area Code')[['mpan']].apply(lambda g: list (map(tuple, 
  g.values.tolist()))).to_dict()

  File "C:\ProgramData\Anaconda3\lib\site- 
  packages\pandas\core\groupby\groupby.py", line 746, in apply
  return self._python_apply_general(f)

  File "C:\ProgramData\Anaconda3\lib\site- 
  packages\pandas\core\groupby\groupby.py", line 751, in _python_apply_general
  keys, values, mutated = self.grouper.apply(f, self._selected_obj, self.axis)

  File "C:\ProgramData\Anaconda3\lib\site- 
  packages\pandas\core\groupby\ops.py", line 171, in apply
  result_values, mutated = splitter.fast_apply(f, group_keys)

  File "C:\ProgramData\Anaconda3\lib\site- 
  packages\pandas\core\groupby\ops.py", line 925, in fast_apply
  return libreduction.apply_frame_axis0(sdata, f, names, starts, ends)

  File "pandas\_libs\reduction.pyx", line 505, in 
  pandas._libs.reduction.apply_frame_axis0

  TypeError: copy() takes no keyword arguments

【问题讨论】:

  • 您可能应该在问题中包含异常的堆栈跟踪。

标签: python pandas dictionary typeerror


【解决方案1】:

更新:问题已在Pandas 1.0.1 中修复,您可以安装它,例如使用 pip:

pip install pandas==1.0.1

这是一个已知问题(3144131456):

GroupBy.apply 被提升 TypeError 如果使用返回列表的函数调用 (:issue:31441)

这已在1.0.x 中解决,例如您可以通过pip 安装:

pip install git+ssh://git@github.com/pandas-dev/pandas.git@1.0.x

【讨论】:

  • 已确认。对 pandas 1.0.0 应用失败,但不是 1.0.x
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 2017-06-29
  • 2017-02-03
  • 2018-07-24
  • 2021-10-10
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多