基本上我想知道是否有一种更“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/