我需要在相同的数据帧中重复类似的操作
  结构,但指的是不同的年份;
              目的是生成一个函数(其中一个函数只是为了表示问题)
              使用其参数之一(在本例中为年份)调用数据。
              我希望能够使用其名称在函数中选择数据框,在这种情况下
              将其名称的最后一部分(其年份)用作该函数的参数”


    import pandas as pd
    import numpy as np



  假设您有三个数据框,每年一个


    df_2005 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
    df_2006 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
    df_2007 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))



  作为示例,此函数从数据帧中提取一些数据
  产生不同的变量


    def func_1 (Year):
       data=data_+year
       X=data.iloc[[1,2],[2,3]].copy()
       return X



  这是我打算使用该功能的方式:


 subdata_2005=func_1('2005')



  我已经尝试了几种方法,例如data_ + year,data_`year',但似乎没有任何效果。
  在这种情况下,我无法找到对我有帮助的类似问题的答案。
  任何建议将不胜感激

最佳答案

我建议的是像一个字典/数据帧列表例如

而不是尝试这样做是行不通的

for i in range(2005,2007): 'df_'+i = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))

尝试

dfs = {}for i in range(2005,2007): dfs[i] = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))

所以
def func_1 (Year): data=data_+year X=data.iloc[[1,2],[2,3]].copy() return X

因此将
def func_1 (Year): data = dfs[Year] X=data.iloc[[1,2],[2,3]].copy() return X

10-04 10:55
查看更多