繁体   English   中英

如何将函数应用于混合类型的Pandas DataFrame?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM