首页 > 解决方案 > python中的循环用于不同的组合

问题描述

我有七个数据帧 tbl1851、tbl1861、tbl1871、tbl1881、tbl1891、tbl1901、tbl1911。

每个数据框都有相同的字段“性别”、“年龄”、“数字”。

我想通过首先创建一系列布尔值来从每个数据帧中选择一个子集。

我的代码看起来像

AM1851 = ((tbl1851.Sex=="M") & (tbl1851.Age>=15) & (tbl1851.Age<999))
AM1861 = ((tbl1861.Sex=="M") & (tbl1861.Age>=15) & (tbl1861.Age<999))
AM1871 = ((tbl1871.Sex=="M") & (tbl1871.Age>=15) & (tbl1871.Age<999))
AM1881 = ((tbl1881.Sex=="M") & (tbl1881.Age>=15) & (tbl1881.Age<999))
AM1891 = ((tbl1891.Sex=="M") & (tbl1891.Age>=15) & (tbl1891.Age<999))
AM1901 = ((tbl1901.Sex=="M") & (tbl1901.Age>=15) & (tbl1901.Age<999))
AM1911 = ((tbl1911.Sex=="M") & (tbl1911.Age>=15) & (tbl1911.Age<999))

我想知道是否有一个循环脚本可以达到与上面列出的代码相同的结果?

有很多不同的选择组合,所以我真的不想复制粘贴、研究和替换很多次。

标签: pythonpandasloopsdataframe

解决方案


不要将每个数据框作为单独的变量,而是将它们放在一个列表中:

frames = [
    # dataframe 1,
    # dataframe 2,
    # etc.
]

然后您可以轻松地循环它们以创建另一个列表:

AMs = []
for frame in frames:
    AMs.append((frame.Sex=="M") & (frame.Age>=15) & (frame.Age<999))

推荐阅读