#python #pandas
Вопрос:
Я хочу добавить значение в фрейм данных pandas в новом столбце. Это значение будет идентификатором, который будет одинаковым для всех строк, оно будет получено из другого фрейма данных pandas, где оно также одинаково для всех строк.
Пример следующим образом, представьте, что у меня есть следующий начальный кадр данных:
C | EN | |
---|---|---|
A | 123 | Имя |
B | 123 | Имя |
Плюс основной фрейм данных,
седло | col2 | |
---|---|---|
0 | d1 | азбука |
1 | d2 | защита |
2 | d3 | ghi |
Я хочу добавить значения в столбцы C и EN (123 и имя), как указано выше:
седло | col2 | C | EN | |
---|---|---|---|---|
0 | d1 | азбука | 123 | Имя |
1 | d2 | защита | 123 | Имя |
2 | d3 | ghi | 123 | Имя |
Я полагаю, что хочу извлечь значения «123» в качестве переменной, затем я хочу извлечь «ABC» в качестве переменной, а затем каким-то образом добавить/присоединиться к основному кадру данных. Однако я получаю много ошибок типа Nan. Любые советы будут приветствоваться.
Ответ №1:
Я думаю, что вы ищете concat
функцию:
df1 = pd.concat([df1, df2.reset_index(drop=True)], axis=1).ffill()
Документацию смотрите здесь.
Если вы хотите добавить только определенные столбцы, я верю, что вы можете сделать что-то вроде:
df1 = pd.concat([df1, df2.reset_index(drop=True)[["C", "EN"]]], axis=1).ffill()
Спасибо Анурагу Дабасу за .ffill()
предоставленную возможность.
Спасибо U11-Forward за указание на другой индекс.
Комментарии:
1. Это не дает правильного результата, но дает: 5 строк.
2. Я думаю, что ffill() также необходим вместе с concat
3. @U11-Переадресовать Нет,
axis=1
этого не должно быть, поскольку он объединяет столбцы, а не строки.4. О, извините, не видел другого индекса… Вы правы
5. Поскольку оба ответа выглядят одинаково, я думаю, что это также должно сработать
df2.join(df1.reset_index(drop=True)).ffill()
Ответ №2:
Вы имеете в виду под:
print(pd.concat([df2, df1.reset_index(drop=True)], axis=1).ffill())
Комментарии:
1. Спасибо всем, это работает очень хорошо и близко к тому, что я ищу. Новый фрейм данных включает столбцы и значения, которые я хотел, однако из фрейма данных 1 переносятся две строки, которые являются NAN для всех столбцов, кроме столбцов C, EN выше. Я уверен, что есть простой способ удалить эти две строки, но если бы был способ остановить их появление изначально, это было бы полезно.