Pandas:根据索引合并数据框和系列

时间:2021-03-21 19:49:17

标签: python pandas

我创建了以下数据框 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')) ,但仍不完整:

enter image description here

之后,我想将以下系列priceearning_byyear“插入”/合并到上面的 df 中:

enter image description here

该系列有一行(2021)太多,我想在插入上述 df 时将其删除。

我的尝试是:

price

但我收到以下错误:

priceearning_byyear.merge(price.to_frame(), left_index=True)

如果我使用 MergeError: Must pass right_on or right_index=True ,我会得到:

right_index=True

我不明白,为什么它不起作用。谢谢你的任何指点:-)

2 个答案:

答案 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

result

答案 1 :(得分:1)

你快到了。只需同时传递 left_indexright_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)

enter image description here