Вы можете сгруппировать их в массив и пройти через них:
tbls = [tbl1851, tbl1861, tbl1871, tbl1881, tbl1891, tbl1901, tbl1911]
my_func = lambda x : ((x.Sex=="M") & (x.Age>=15) & (x.Age<999))
AMs=[]
for df in k:
AMs.append(df.apply(my_func))
И если вы хотите получить доступ к элементу по его именам, вместо создания списка вы можете создать словарь с именами переменных в качестве ключей к ним:
AM_names=["AM1851","AM1861","AM1871","AM1871","AM1881","AM1891","AM1901","AM1911"]
tbls = [tbl1851, tbl1861, tbl1871, tbl1881, tbl1891, tbl1901, tbl1911]
my_func = lambda x : ((x.Sex=="M") & (x.Age>=15) & (x.Age<999))
AMs={}
for idx, df in enumerate(tbls):
AMs[df[AM_names[idx]]]=df.apply(my_func)