0

我尝试将以下代码(最小示例)应用于我的 200 万行 DataFrame,但由于某种原因 .apply 向函数返回多行并破坏了我的代码。我不确定发生了什么变化,但代码之前确实运行过。

def function(row):

  return [row[clm1], row[clm2]]


res = pd.DataFrame()
res[["clm1", "clm2"]] = df.swifter.apply(function,axis=1)

有没有人有想法或类似的问题?

重要的是没有更快的一切工作正常,但由于行数太慢。

4

3 回答 3

1

这应该工作==>

  def function(row_different_name):
        
        return [row_different_name[clm1], row_different_name[clm2]]
        
        
  res = pd.DataFrame()
  res[["clm1", "clm2"]] = df.swifter.apply(function,axis=1)

尝试将函数参数 rwo 的名称更改为其他名称。

于 2021-10-04T16:12:39.380 回答
0

根据这个先前的答案,如果您像这样更改它,您正在尝试做的事情应该可以工作:

def function(row):
  return [row.swifter[clm1], row.swifter[clm2]]


res = pd.DataFrame()
res[["clm1", "clm2"]] = df.apply(function, axis=1, result_type='expand')

这是因为应用于列缺少result_typearg,而应用于数据框则有

于 2020-10-01T09:15:27.323 回答
-1

axis=1表示列,因此它将垂直插入。那是你要的吗?尝试删除axis=1

于 2020-10-01T09:06:35.847 回答