Панды: использовать `DataFrame.fillna`, чтобы заполнить пропущенные значения для` DataFrame.add`? - PullRequest
0 голосов
/ 03 октября 2018

Метод DataFrame.add(fill_value=my_value) позволяет добавлять к фреймам данных и выбирать одиночное значение my_value, которое будет использоваться для замены пропущенных значений.

С другой стороны, DataFrame.fillna дает большую гибкость при заполнении пропущенных значений (например, позволяет дополнить конечные пропущенные значения последним действительным значением в столбце), но может применяться только к уже существующимdataframe.

Есть ли способ использовать что-то вроде DataFrame.fillna для заполнения пропущенных значений при добавлении двух кадров данных при использовании DataFrame.add вместо одного значения ??

например.Я хотел бы выполнить эквивалент

import pandas as pd
A = pd.Series(data=[1,2,3], index=['a', 'b', 'c'])
B = pd.Series(data=[1,2,3], index=['b', 'c', 'd'])
frame = pd.DataFrame({'a': A, 'b': B})
frame = frame.fillna(method='pad') # pad trailing missing values with last valid ones, column-wise
frame = frame.fillna(value=0) # pad (remaining) leading values with zeros
result = frame.sum(axis=1)

, но с использованием A.add(B, unknown_params).Если это не доступно, есть ли другой способ более эффективный, чем то, что я сейчас делаю ??

1 Ответ

0 голосов
/ 03 октября 2018

Универсального, магического метода для выполнения всех ваших манипуляций не существует.Вы можете создать функцию, использовать цепочку методов и использовать pd.DataFrame.pipe, чтобы сделать ваш код более понятным:

def fill_sum(df):
    return df.fillna(method='pad').fillna(0).sum(1)

frame = pd.DataFrame({'a': A, 'b': B})

frame = frame.pipe(fill_sum)

print(frame)

a    1.0
b    3.0
c    5.0
d    6.0
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...