繁体   English   中英

迭代熊猫数据框中的两列

[英]Iterating through two columns in a pandas dataframe

我正在尝试遍历数据框中的两列,并通过查找今年的合同( data.Year_Season == 2014-2015 )来为 statsmodel 分析创建一个虚拟列,如果客户一直续签合同,并且客户已续订不止一次( data.Rank_ouput > 1 )。 请参阅下面的代码:

def make_always_renewed_column(data):
    for i, row in data.iterrows():  
        if row.Year_Season and row.Rank_output > 1:
            return 1
        else:
            return 0 


data['alwaysRenewed'] = make_always_renewed_column(data)

但是当我查看返回的内容时:

data.groupby(['alwaysRenewed'])[['lead_id']].count()

新列中的所有行都返回 0。

我在满足.iloc条件的一行上尝试了这个,它返回True

有任何想法吗?

更新

只是这样试过没有用:

def make_always_renewed_column(data):
for row in data.itertuples():
    if row[8] == '2014-2015' and row[10] > 1:
        return 1
    else:
        return 0 
    

无需遍历各个行来执行这些类型的测试。 Pandas 列上的+-==等操作是矢量化的,即它们会自动应用于列的每个元素。 您的测试应如下所示:

data['alwaysRenewed'] = (data['Year_Season'] == '2014-2015') & (data['Rank_output'] > 1)

这将创建一个布尔列,即一列True / False值。 出于总和、均值等目的,这些将类似于 0/1,但您可以使用以下方法显式转换为 0/1:

data['alwaysRenewed'] = data['alwaysRenewed'].astype(int)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM