基本上,我想知道是否还有一种更“泛泛”的表达方式:
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/