python - 有没有办法将 `apply` 函数应用于数据帧的一列,同时保持其他列固定?

标签 python pandas

基本上我想知道是否有一种更“Pandathonic”的方式来表达这一点:

df.apply(lambda col: myfunc(col) if col == "mycol" else col)

类似

df.apply(myfunc, subset = ["mycol"]) 

这就是我想要的东西。

原因是我试图避免这样做:

df['mycol']=myfunc(df['mycol'])

因为我现在正在热衷于函数式编程,并且我希望我的代码能够避免副作用。

最佳答案

在 pandas 0.16 或更高版本中,您可以使用 DataFrame.assign ,它会返回一个新的 DataFrame,其中包含您告诉它执行的任何分配,但不会修改原始数据:

>>> d = pandas.DataFrame({"A": [1, 2, 3], "B": [8, 88, 888]})
>>> d
   A    B
0  1    8
1  2   88
2  3  888
>>> d.assign(A=d.A**2)
   A    B
0  1    8
1  4   88
2  9  888
>>> d
   A    B
0  1    8
1  2   88
2  3  888

关于python - 有没有办法将 `apply` 函数应用于数据帧的一列,同时保持其他列固定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33074132/

相关文章:

python - 带分组依据的 Django haystack 自定义查询

python - 未定义错误 : 'flask_paginate.Pagination object' has no attribute 'skip'

python - 如何为 tkinter 和 paho-mqtt-client 定位无限循环?

python - 如何根据多个标准对 Pandas DataFrame 进行排序?

python - Pandas 结合两个分组依据,过滤并合并分组(计数)

javascript - 使用 Json 和 BS4 抓取 HTML 中的脚本标签

python - 在 for 循环中使用 slice 来构建列表

python - Python 中的 json_normalize

python - Pandas Dataframe 中的焊盘选择范围?

python - 如何在python中将两个数据帧一个带值另一个带 bool 值变成一个数据帧?