每当函数的 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
最佳答案
DataFrame.append 采用“DataFrame 或 Series/dict 类对象,或这些对象的列表” 这段话来自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 返回一个新的 DataFrame,因此您需要设置 df = 来使用新的 DataFrame。
但是,如果我编写了这个方法,我可能只会创建一个 dic 列表并在最后将它们转换为 DataFrame。但也许这只是个人选择。
关于python - 当我执行循环时,如何在数据框中添加额外的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59138058/