基本上,我想知道是否还有一种更“泛泛”的表达方式:

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


就像是

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


是我想到的那种事情。

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

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


因为目前我正在进行函数式编程,所以我希望我的代码避免产生副作用。

最佳答案

在熊猫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 - 有没有一种方法可以将功能“应用”到数据框的一列,而使其他列保持固定?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33074132/

10-12 20:28