我有一堆数据框,所有数据框都包含一列,该列是数据框的名称,下划线用空格替换,并且最后3个字符不存在。 ['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)的列表(字符串)。
SelFieldsDfs = ['Player_Bio_df', 'Team_df', 'Rate_df']
我想过滤所有数据帧,以使Team_df仅在“字段”中具有具有address2和home的记录(因为在那些相同的记录中Player Bio = 2)。由于Rate = 2个int软管记录,因此rate_df仅具有地址2,状态,家庭和单元格记录
所以我要在该特定字段上为值2过滤此数据帧列表
for dfs in SelFieldsDfs:
colname = str(dfs).replace('_', ' ')[:-3]
vars()[str(dfs)] = str(dfs)[str(dfs).colname == 2]
错误显示'AttributeError:'str'对象没有属性'colname'
答案 0 :(得分:1)
错误是因为您试图在此行中使用字符串(select
o.id,
sum(a.hours) as "hours",
sum(di.amount) as "amount"
from organizations o
inner join activities a
on a.organization_id = o.id
inner join donations d
on d.organization_id = o.id
inner join donation_items di
on di.donation_id = d.id
group by o.id
;
)作为数据框:
dfs
但是,您需要获取并更改数据框名称的值,因此将该行更改为此:
vars()[str(dfs)] = str(dfs)[str(dfs).colname == 2]