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