#python #pandas
Вопрос:
У меня есть два df1
кадра данных, и df2
мне нравятся следующие
df1
val
0 -2
1 -1
2 -5
3 -2
4 -4
5 -7
6 -7
7 -3
8 -6
df2
Name Year size
0 Marc 2010 2
1 Marc 2011 1
2 Eric 2010 1
3 Eric 2011 1
4 Sara 2010 2
5 Sara 2011 2
Я хотел бы обновить информацию о df1
на основе информации из df2
следующим образом:
df1
val Name Year
0 -2 Marc 2010
1 -1 Marc 2010
2 -5 Marc 2011
3 -2 Eric 2010
4 -4 Eric 2011
5 -7 Sara 2010
6 -7 Sara 2010
7 -3 Sara 2011
8 -6 Sara 2011
P.S. Я не могу присоединиться к этой информации.
Ответ №1:
Попробуй:
>>> df1.join(df2.reindex(df2.index.repeat(df2["size"])).reset_index(drop=True)).drop("size", axis=1)
Val Name Year
0 -2 Marc 2010
1 -1 Marc 2010
2 -5 Marc 2011
3 -2 Eric 2010
4 -4 Eric 2011
5 -7 Ssara 2010
6 -7 Ssara 2010
7 -3 Ssara 2011
8 -6 Ssara 2011
Комментарии:
1. Я не знал, что
pd.Index.repeat
это работает со списком (от 0 до выпадения) повторений. Хорошее решение.2. @Michaelsczesny — я тоже узнал об этом от SO некоторое время назад 😉