簡體   English   中英

如何使用 dataframe 名稱作為變量執行變量賦值

[英]How to perform variable assignment using dataframe name as variable

我寫了一個 python function,它將數據框作為 arguments 之一。下面是 function 的簡化版本:

def cat_update(df_to_update, df_source, cat_lst, con_lst):
    try:
        for cat, con in itertools.product(cat_lst, con_lst):
            df_to_update.at[cat,  con] = df_source.at[cat,  con]

下面是我如何稱呼這個 function:

cat_update(df_templete1, raw_source, cat_lst, con_lst)

現在,我需要在可以有多個源數據幀 ( raw_source ) 的地方擴展我的代碼

我如何在這里指定一個變量,而不是指定實際的數據框值,我可以根據要求更改它?

我嘗試按如下方式指定分配變量的值:

raw_source = 'df_source_1'

但在這種情況下,它是一個字符串而不是一個數據框,因此 function 無法按照預期對其進行評估。 簡而言之,我需要將它從str更改為pandas.core.frame.DataFrame

更多信息:我在 for 循環中調用上面的 function:

for n in range(len(df_config)):
    cat_lst = df_config.at[n,'category'].split(",")
    con_lst = df_config.at[n,'country'].split(",")
    raw_source = df_config.at[n,'Raw source']
    energy_source = df_config.at[n,'Energy source']

因此,源數據幀是從保存在df_config中的用戶輸入中自動獲取的。

創建一個這樣的字典: {"data_frame_name": data_frame} ,這樣你就可以通過它的名稱訪問每個 data_frame,並假設我們有一個data_src_1數據,如下所示:

data_src_1 = [['Alex',10],['Bob',12],['Clarke',13]]
df_source_1 = pd.DataFrame(data_src_1)
raw_sources = {"df_source_1" : df_source_1}    # You can have other dataframes here

將你想要df_source的數據框名稱傳遞給cat_update方法,然后像這樣編輯方法:

raw_sources = {"df_source_1" : df_source_1, ...}
def cat_update(df_to_update, df_source, cat_lst, con_lst):
    try:
        for cat, con in itertools.product(cat_lst, con_lst):
            df_to_update.at[cat,  con] = raw_sources[df_source].at[cat,  con]

但是,您可以只將df_source_1等數據框本身傳遞給該方法,但在上面的代碼片段中,您可以將所有數據框一起放在一個字典 ( raw_sources ) 中。

暫無
暫無

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

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