在执行循环时,如何在数据帧中添加额外的行

2024-09-24 22:30:08 发布

您现在位置:Python中文网/ 问答频道 /正文

每当一个函数的出价增加时,我都想给数据帧添加一些因子。 我现在创建的函数与我想要的不同,因为它只返回一次数据帧。如果determinerank是一个函数,并且假定它工作良好,那么应该如何更正这个函数? 我已经改变了很多东西,但我不知道要改变或增加什么。 请给我一些建议

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

Tags: 数据函数targetdftimeamountkeywordnow
2条回答

DataFrame.append接受“DataFrame或Series/dict-like对象,或这些对象的列表” 这句话来自https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html

我认为对你来说,更简单的方法是通过口述而不是列表。你的附属物看起来像

df = df.append({'Time': t,
                'Now_Rank': n,
                'Amount': bid_t,
                'Weekday': w,
                'Holiday': h,
                'Keyword': k,
                'Target': rank}, ignore_index=True)

编辑: Append返回一个新的数据帧,因此需要设置df =以使用新的数据帧

但是,如果我是用这种方法编写的,我可能只会创建一个dic列表,并在最后将它们转换为一个数据帧。但也许这只是个人选择

您应该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

相关问题 更多 >