#python #pandas
#python #pandas
Вопрос:
У меня есть следующие фреймы данных:
A.
k m n
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
5 x x x
6 x x x
7 x x x
8 x x x
9 x x x
B1.
l i j
1 x 46 x
2 x 64 x
3 x 83 x
9 x 70 x
B2.
l i j
0 x 23 x
4 x 34 x
6 x 54 x
8 x 32 x
B3.
l i j
0 x 11 x
5 x 98 x
7 x 94 x
9 x 80 x
Как я могу добавить столбец «i» (из фреймов данных B1, B2 и B3) в фрейм данных A?
Что касается повторяющихся значений (например, индекс 9 в B1 и B3 и индекс 0 в B2 и B3), я хочу сохранить крайнее левое значение [B1, B2, B3]
(например, 23 для индекса 0 и 70 для индекса 9).
Желаемый результат будет:
k m n i
0 x x x 23
1 x x x 46
2 x x x 64
3 x x x 83
4 x x x 34
5 x x x 98
6 x x x 54
7 x x x 94
8 x x x 32
9 x x x 70
Комментарии:
1. Можете ли вы предоставить желаемый результат A?
2. @null: я отредактировал свой исходный пост с желаемым результатом A.
Ответ №1:
вы можете concat
использовать фреймы данных Bx и использовать duplicated
в индексе, чтобы удалить дублированный индекс и сохранить первый.
A['i'] = (pd.concat([B1, B2, B3])
.loc[lambda x: ~x.index.duplicated(keep='first'), 'i'])
print(A)
k m n i
0 x x x 23
1 x x x 46
2 x x x 64
3 x x x 83
4 x x x 34
5 x x x 98
6 x x x 54
7 x x x 94
8 x x x 32
9 x x x 70