簡體   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