Заполните один столбец фрейма данных из другого, но каждое значение n-й строки

#python #pandas #dataframe

Вопрос:

Я пытаюсь заполнить каждое 2-е значение из столбца df2 фрейма данных в столбец df1 фрейма данных , используя iloc , однако, в результате я получаю альтернативные нулевые значения. Как получить непрерывные значения без нулевых значений?

Например:

 df1 = pd.DataFrame({'col1': [1, 2, 3, 4], 'col2': list('ABCD')})
df2 = pd.DataFrame({'col1': [2, 4, 6, 8, 10, 12, 14, 16]})

df1.col1 = df2.iloc[::2]
 

Выход:

 | col1     | col2           |
| -------- | -------------- |
|   2      |     A          |
|  NULL    |     B          |
|   6      |     C          |
|  NULL    |     D          |
 

Ожидаемый результат:

 | col1     | col2           |
| -------- | -------------- |
|   2      |     A          |
|   6      |     B          |
|   8      |     C          |
|   10     |     D          |
 

Ответ №1:

Преобразуйте Series его в список, и он должен работать для вас, аналогично:

 df1.col1 = df2.iloc[::2].tolist()
 

Выход:

 | col1     | col2           |
| -------- | -------------- |
|   2      |     A          |
|   6      |     B          |
|   8      |     C          |
|   10     |     D          |
 

Комментарии:

1. Спасибо, это работает !

Ответ №2:

Вы можете сделать:

 df2.iloc[::2, :]
 

Что даст вам:

    col1
0     2
2     6
4    10
6    14
 

Комментарии:

1. Спасибо за ответ. Я попробовал ваш код, он дал мне точно такие же результаты. Оказывается, .iloc[::2] и .iloc[::2, :] являются такими же.