Пересылать конкретные столбцы в pandas dataframe

Если у меня есть dataframe df с несколькими столбцами ['x', 'y', 'z'], то как мне пересылать только один столбец 'x' или группу столбцов ['x', 'y']?

Я знаю только, как это сделать по оси.

Ответ 1

ТЛ; др:

cols = ['X', 'Y']
df.loc[:,col] = df.loc[:,col].ffill()

И я также добавил автономный пример:

>>> import pandas as pd
>>> import numpy as np
>>> 
>>> #%% create dataframe
... ts1 = [0, 1, np.nan, np.nan, np.nan, np.nan]
>>> ts2 = [0, 2, np.nan, 3, np.nan, np.nan]
>>> d =  {'X': ts1, 'Y': ts2, 'Z': ts2}
>>> df = pd.DataFrame(data=d)
>>> print(df.head())
    X   Y   Z
0   0   0   0
1   1   2   2
2 NaN NaN NaN
3 NaN   3   3
4 NaN NaN NaN
>>> 
>>> #%% apply forward fill
... col = ['X', 'Y']
>>> df.loc[:,col] = df.loc[:,col].ffill()
>>> print(df.head())
   X  Y   Z
0  0  0   0
1  1  2   2
2  1  2 NaN
3  1  3   3
4  1  3 NaN

Ответ 2

for col in ['X', 'Y']:
    df[col] = df[col].ffill()

Ответ 3

Я использовал приведенный ниже код, здесь для X и Y метод также может отличаться от ffill().

 df1 = df.fillna({
        'X' : df['X'].ffill(),
        'Y' : df['Y'].ffill(),
    })