首页 > 解决方案 > 执行循环时如何在数据框中添加额外的行

问题描述

每当函数的 bid_t 增加时,我想向数据框添加因子。我现在创建的函数与我想要的不同,因为它只返回一个数据框。如果确定排名是一个函数,并且假设它运行良好,那么应该如何更正这个函数?我已经改变了很多东西,但我不知道要改变或添加一些东西。请给我一些想法...

def determinehamsu(t,n,bid_t,w,h,k):

    encode = LabelEncoder()
    rank = determineRank(t,n,bid_t,w,h,k)
    df = pd.DataFrame(data={'Time': [t], 'Now_Rank': [n], 'Amount': [bid_t], 'Weekday': [w], 'Holiday': [h], 'Keyword': [k], 'Target': [rank]},
                      columns=['Time', 'Now_Rank', 'Amount', 'Weekday', 'Holiday', 'Keyword', 'Target'])

    if bid_t <= 6010:
        for bid_t in range(bid_t, 6010,10):
            rank = determineRank(t,n,bid_t,w,h,k)
            df.append([t, n, bid_t, w, h, k])
            print(rank)
            print(bid_t)

    elif bid_t > 6010:
        for bid_t in range(bid_t,0,-10):
            rank = determineRank(t,n,bid_t,w,h,k)
            df.append([t, n, bid_t, w, h, k])
            print(rank)
            print(bid_t)
    return df

标签: pythonpandasdataframe

解决方案


你应该append有一个熊猫数据框:

def determinehamsu(t,n,bid_t,w,h,k):

    encode = LabelEncoder()
    rank = determineRank(t,n,bid_t,w,h,k)
    df = pd.DataFrame(data={'Time': [t], 'Now_Rank': [n], 'Amount': [bid_t], 'Weekday': [w], 'Holiday': [h], 'Keyword': [k], 'Target': [rank]},
                      columns=['Time', 'Now_Rank', 'Amount', 'Weekday', 'Holiday', 'Keyword', 'Target'])

    if bid_t <= 6010:
        for bid_t in range(bid_t, 6010,10):
            rank = determineRank(t,n,bid_t,w,h,k)
            temp = pd.DataFrame(data={'Time': [t], 'Now_Rank': [n], 'Amount': [bid_t], 'Weekday': [w], 'Holiday': [h], 'Keyword': [k], 'Target': [rank]})
            df.append(temp, ignore_index=True)
            print(rank)
            print(bid_t)

    elif bid_t > 6010:
        for bid_t in range(bid_t,0,-10):
            rank = determineRank(t,n,bid_t,w,h,k)
            temp = pd.DataFrame(data={'Time': [t], 'Now_Rank': [n], 'Amount': [bid_t], 'Weekday': [w], 'Holiday': [h], 'Keyword': [k], 'Target': [rank]})
            df.append(temp, ignore_index=True)
            print(rank)
            print(bid_t)
    return df

推荐阅读