簡體   English   中英

在 function 中創建 dataframe 后,如何重新使用它們?

[英]how do I re-use dataframe after creating them in a function?

我正在嘗試使用 function 創建 dataframe 但我被迫將其導出為腌制的 object。 有沒有更有效的方法在沒有泡菜的情況下使用它?

data = {'string_to_split': [ 'cava;san felice;  cancello', 'niente;qualcosa;0' ]}
data = pd.DataFrame(data)

global final_df_name
def extractor(col_name_0, col_name_1 , df = data , sep =';', final_df_name='final_df_name'):
    counter = 0
    col_name_0 = df['string_to_split'].apply(lambda x : x.split(sep)[counter]) 
    counter =+1  
    col_name_1 = df['string_to_split'].apply(lambda x : x.split(sep)[counter]) 
    df['var_name_0'] = col_name_0  
    df['var_name_1'] = col_name_1  
    final_df_name = df
    final_df_name.to_pickle("final_df_name")

test =  pd.read_pickle("final_df_name")

只需從 function 返回 dataframe 可能對您有用

# earlier logic

def foo(df):
    operate_on_df(df)
    return df

df = pd.DataFrame(source_data)

df = foo(df)
# continue to work with df

請注意,更改 Python 中的可變輸入參數將更改它們以后的使用,因為它們是通過引用傳遞的。 這意味着您可以直接使用它而無需return和重新分配。 但是,為了清楚起見,通常會返回修改后的引用。

我在這里找到了解決方案: Returning a dataframe in python function

實際上正確的代碼是:

enter code here
data = {'string_to_split': [ 'cava;san felice;  cancello', 'niente;qualcosa;0' ]}
data = pd.DataFrame(data)

global final_df_name  
def extractor(col_name_0, col_name_1 , df = data , sep =';', 
    final_df_name='final_df_name'):
    counter = 0
    col_name_0 = df['string_to_split'].apply(lambda x : x.split(sep)[counter]) 
    counter =+1  
    col_name_1 = df['string_to_split'].apply(lambda x : x.split(sep)[counter]) 
    df['var_name_0'] = col_name_0  
    df['var_name_1'] = col_name_1  
    final_df_name = df
    return final_df_name

## by this last line I have the saved DataFrame: 
data_want = extractor( col_name_0 = 'col_name_0',  col_name_1 ='col_name_1')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM