на одном столбце с тем же индексом. Это фактически означает то же самое.

ве функции кажутся мне эквивалентными. Вы можете видеть, что они выполняют ту же цель в приведенном ниже коде, поскольку столбцы c и d равны. Так, когда я должен использовать один по другому?

Вот пример:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0, 10, size=(10, 2)), columns=list('ab'))
df.loc[::2, 'a'] = np.nan

Возвращает:

     a  b
0  NaN  4
1  2.0  6
2  NaN  8
3  0.0  4
4  NaN  4
5  0.0  8
6  NaN  7
7  2.0  2
8  NaN  9
9  7.0  2

Это моя отправная точка. Теперь я добавлю два столбца, один с использованием comb_first и один с использованием fillna, и они будут давать одинаковый результат:

df['c'] = df.a.combine_first(df.b)
df['d'] = df['a'].fillna(df['b'])

Возвращает:

     a  b    c    d
0  NaN  4  4.0  4.0
1  8.0  7  8.0  8.0
2  NaN  2  2.0  2.0
3  3.0  0  3.0  3.0
4  NaN  0  0.0  0.0
5  2.0  4  2.0  2.0
6  NaN  0  0.0  0.0
7  2.0  6  2.0  2.0
8  NaN  4  4.0  4.0
9  4.0  6  4.0  4.0

Ответьте на этот вопрос для набора данных:Объединить значения столбца фрейма данных Pandas в новый столбец

 Wondercricket10 окт. 2017 г., 23:22
Я не очень знаком с пандами, но, похоже, у тебя больше контроляfillna в то время какcombine_first одно сделка

Ответы на вопрос(1)

Решение Вопроса

combine_first предназначен для использования, когда существуют непересекающиеся индексы. Он будет эффективно заполнять нулями, а также указывать значения для индексов и столбцов, которых не было в первом.

a', 'b'], ['w', 'x', 'y'])
dfb = pd.DataFrame([[1, 2, 3], [3, 4, 5]], ['b', 'c'], ['x', 'y', 'z'])

dfa.combine_first(dfb)

     w    x    y    z
a  1.0  2.0  3.0  NaN
b  4.0  1.0  5.0  3.0  # 1.0 filled from `dfb`; 5.0 was in `dfa`; 3.0 new column
c  NaN,  3.0  4.0  5.0  # whole new index

Обратите внимание, что все индексы и столбцы включены в результаты

Теперь, если мыfillna

dfa.fillna(dfb)

   w    x  y
a  1  2.0  3
b  4  1.0  5  # 1.0 filled in from `dfb`

Не обратите внимание на новые столбцы или индексы отdfb включены. Мы только заполнили нулевое значение гдеdfa общий индекс и информация о столбце.

В вашем случае вы используетеfillna а такжеcombine_first на одном столбце с тем же индексом. Это фактически означает то же самое.

Ваш ответ на вопрос