Pandas dataframe - удаляет пропущенные строки значений или заменяет пропущенные значения на 0 в зависимости от условия - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть pandas Dataframe с некоторыми пропущенными значениями в столбце AI заметил, что значения столбца A отсутствуют, когда значения столбца B равны 0, как показано ниже:

B   A
-----
10  100
0   NULL
20  500
0   NULL

Я хочу написать код на Python на основелогика ниже:

IF df[A] isnull then 
 if df[B]==0  then
    replace df[A] with 0
 else
    drop df[A] row
END IF

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Другой подход заключается в использовании pandas.DataFrame.drop :

# Code to create input dataframe
df = pd.DataFrame({'B': [10, 0, 20, 0, 1], 'A': [100, np.nan, 500, np.nan, np.nan]})

# Input dataframe
    B      A
0  10  100.0
1   0    NaN
2  20  500.0
3   0    NaN
4   1    NaN

# Code to solve your problem
df.drop(index=df[df['A'].isnull() & df['B'] != 0].index, inplace=True)
df['A'] = df['A'].fillna(0)

# Output dataframe
    B      A
0  10  100.0
1   0    0.0
2  20  500.0
3   0    0.0
0 голосов
/ 18 сентября 2018

Я сделал специальный случай, например, B не равен 0, а A равно NaN

Пример данных

df
Out[563]: 
    B      A
0  10  100.0
1   0    NaN
2  20  500.0
3   0    NaN
4   1    NaN

newdf=df[~(df.B.ne(0)&df.A.isna())].copy()
newdf.A=newdf.A.fillna(0)
newdf
Out[566]: 
    B      A
0  10  100.0
1   0    0.0
2  20  500.0
3   0    0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...