Python 具有for循环的数据帧

Python 具有for循环的数据帧,python,pandas,Python,Pandas,我对Python比较陌生,遇到了一段有趣的代码,我正试图更详细地理解它。我的数据框如下所示: import pandas as pd d = {'business': ['FX','a','CR'], 'A/L': ['A','A','L']} data = pd.DataFrame(data=d) data 有人非常友好地在此网站上发布了以下代码: cols=data.columns pd.DataFrame({col: data[col].str.contains('#') for col

我对Python比较陌生,遇到了一段有趣的代码,我正试图更详细地理解它。我的数据框如下所示:

import pandas as pd
d = {'business': ['FX','a','CR'], 'A/L': ['A','A','L']}
data = pd.DataFrame(data=d)
data
有人非常友好地在此网站上发布了以下代码:

cols=data.columns
pd.DataFrame({col: data[col].str.contains('#') for col in cols})
我理解pd.DataFrame中的代码在做什么。但是,我找不到任何关于for循环在上述上下文中如何工作的文档。这看起来不像列表理解,尽管它的工作原理类似于列表理解


有人能给我指一些说明如何使用上述语法的文档/教程吗?

这实际上不是列表理解,而是使用了两个概念

  • 鉴于以下代码

    {col: data[col].str.contains('#') for col in cols}
    
    使用变量col迭代list df.columns并将其添加到结果列表中。这个语法是字典理解

    词典理解示例:

    myDict = {x: x**2 for x in [1,2,3,4,5]} 
    print (myDict) 
    
    输出

    {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
    
    这是一个听写理解。 字典允许您将一个值映射到另一个值,这就是您在代码中所做的。 这位官员举了一个简洁的例子

    {x:x**2代表(2,4,6)中的x}

    它返回一个dict:
    {2:4,4:16,6:36}
    ,其中
    x
    映射到
    x**2

    基本上你在这里做的是


    {key:key所需的值,dict.items()中的值}

    这是一个dict理解:使用
    cols=data.columns
    保存列标题:“business”和“A/L”,然后在该列上循环并查看是否有“#”在其中,使用
    print(pd.DataFrame({col:data[col].str.contains('#')for cols})查看发生了什么