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