Python 根据数据帧的名称筛选数据帧中的列

Python 根据数据帧的名称筛选数据帧中的列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一组数据帧,所有数据帧都包含一列,该列是数据帧的名称,下划线替换为空格,最后3个字符为sans。 ['Player_Bio_df'、'Team_df'、'Rate_df'] 比如说 Player_Bio_df= pd.DataFrame({'field':['name','address','address2','city','state','zip','home','cell'],'Player Bio':[1,1,2,1,3,1,2,1]}) Team_df = pd.DataFram

我有一组数据帧,所有数据帧都包含一列,该列是数据帧的名称,下划线替换为空格,最后3个字符为sans。 ['Player_Bio_df'、'Team_df'、'Rate_df'] 比如说

Player_Bio_df= pd.DataFrame({'field':['name','address','address2','city','state','zip','home','cell'],'Player Bio':[1,1,2,1,3,1,2,1]})

Team_df = pd.DataFrame({'field':['name','address','address2','city','state','zip','home','cell'],'Team':[1,1,2,1,2,1,2,2]})

Rate_df= pd.DataFrame({'field':['name','address','address2','city','state','zip','home','cell'],'Rate':[1,1,1,1,3,1,2,1]})
我还有一个所有数据帧名称的列表(字符串)(下面是SelFieldsDfs)

我想过滤所有的数据帧,这样Team_df只在“Field”中有address2和home的记录(因为这些记录中的Player Bio=2)。Rate_df将只具有记录address2、state、home和cell,因为Rate=2 int hose记录

因此,我需要筛选该特定字段上的数据帧列表中的值2

 for dfs in SelFieldsDfs:
     colname = str(dfs).replace('_', ' ')[:-3]
     vars()[str(dfs)] = str(dfs)[str(dfs).colname == 2]

错误为'AttributeError:'str'对象没有属性'colname'

错误是因为您试图使用字符串(
dfs
)作为此行的数据帧:

vars()[str(dfs)] = str(dfs)[str(dfs).colname == 2]
但是,您需要获取并更改数据帧名称的值,因此将该行更改为:

vars()[dfs]= vars()[dfs][vars()[dfs][colname]==2]

str(dis)
的计算结果是什么?这是一个由12个数据帧组成的字符串列表:['Player_Bio_df'、'Team_df'、'Rate_df']等等。然后每个数据帧都有一个列,如Player Bio、Team、Rate等。更新了一个输入错误,并详细说明了您在字符串上操作的错误,就像它是一个数据帧一样,这是行不通的。在python中,您不希望通过变量名访问变量。在您的示例中,您的as
dfs
中有单独的数据帧。直接操作它
vars()[dfs]= vars()[dfs][vars()[dfs][colname]==2]