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