簡體   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