【发布时间】:2014-04-17 21:31:51
【问题描述】:
这就是我将函数应用于 Pandas 数据框的方式,它可以在原地工作并修改原始数据框。
df = pd.DataFrame([[0,0,0],
[0,0,0],
[0,0,0]],
columns=['a', 'b', 'c'])
def add_one(x) :
x['b'] = x['b'] + 1
return x
df.apply(add_one, axis=1)
但是,如果我在这个数据帧上尝试相同的操作(它有整数和浮点数,而不仅仅是整数),那么它无法就地应用并总是返回一个数据帧。但我有一个巨大的数据框,所以我想就地做。
df = pd.DataFrame([[0,1.0,0],
[0,1.0,0],
[0,1.0,0]],
columns=['a', 'b', 'c'])
你能帮帮我吗? (以及为什么首先会出现这种行为!)
谢谢。
【问题讨论】:
-
试试
x['b']+=1有关系吗? -
你用的是什么版本的pandas,在
0.13.1可以用 -
嗯,你是对的,因为行为不同,对我来说第二个代码示例行为是正确的,因为docs 中没有任何内容表明它应该就地修改
-
@EdChum 我在 0.12.0,将尝试新版本。
-
查看我的最新评论,
0.13.1也表现出相同的行为,我对文档的解释是它不应该按照您的预期进行修改,所以您应该分配,您可以这样做df['b'] = df['b'].apply(add_one)我猜这不是你真正在做的事情,而且你的功能比这要复杂一些