[英]How to apply a function to a mixed type Pandas DataFrame in place?
这就是我将函数应用于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'])
你能帮我吗? (以及为什么这种行为首先!)
谢谢。
列中的每个元素都具有相同的dtype,因此当您从DataFrame
获得列Series
,它们共享内存。
但是如果从DataFrame
获取行Series
,则它可能不包含相同的dtype值,在这种情况下,您将获得转换为常规dtype的数据的副本。
我在下面的代码中, df.apply(f, axis=1)
将每一行传递给函数,该函数包含数据的副本:
df = pd.DataFrame([[0,1.0,0],
[0,1.0,0],
[0,1.0,0]],
columns=['a', 'b', 'c'])
def f(x):
x.values[0] += 1
return x
df.apply(f, axis=0) #pass every column to f, this will change the original dataframe
print df
df.apply(f, axis=1) #pass every row to f, this will not change the original dataframe
print df
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.