我创建了以下数据框 def change_order_status(request):
user = request.user
teacher = Teacher.object.get(id = user.teacher.id)
today = datetime.now()
today = today + timedelta(minutes=30)
today = today.strftime("%Y-%m-%d %H:%M")
test = []
if request.method=="POST":
teacher_time = Student_Time.object.filter(teacher_id = teacher.id, paid=0, status=2)
for tt in teacher_time:
if tt.order_date < today:
**tt.update(paid=1)**
return HttpResponseRedirect(reverse('teacherStatistic'))
return HttpResponseRedirect(reverse('teacherStatistic'))
,但仍不完整:
之后,我想将以下系列priceearning_byyear
“插入”/合并到上面的 df 中:
该系列有一行(2021)太多,我想在插入上述 df 时将其删除。
我的尝试是:
price
但我收到以下错误:
priceearning_byyear.merge(price.to_frame(), left_index=True)
如果我使用 MergeError: Must pass right_on or right_index=True
,我会得到:
right_index=True
我不明白,为什么它不起作用。谢谢你的任何指点:-)
答案 0 :(得分:1)
您需要在 lst = ['1', 'hello', 'bob', '2', 'third', '3', '0']
for i in range(len(lst)):
if lst[i].isdigit():
lst[i] = int(lst[i])
if lst[i] == 0:
lst[i] = 'N/A'
print(lst)
中指定要合并的列。
priceearning_byyear
答案 1 :(得分:1)
你快到了。只需同时传递 left_index
和 right_index
即可获得如下所需的效果。
# Reproduce your data
import pandas as pd
priceearning_byyear = pd.DataFrame(dict(year=[2016,2017,2018,2019,2020], eps=[2.09,2.32,3.00,2.99,3.31])).set_index('year')
price = pd.Series([28.95,42.31,39.44,73.41,132.69,119.99], index=[2016,2017,2018,2019,2020,2021])
price.name = 'Close'
price.index.name='year'
# Merge priceearning_byyear and price by using their indexes
priceearning_byyear.merge(price,left_index=True,right_index=True)