Присвоение значения новому столбцу панд при заданном условии - PullRequest
0 голосов
/ 21 ноября 2018

Я новичок в Pandas

Я хочу создать условный столбец в Pandas.В RI это можно сделать с помощью Mutate, но в Pandas.assign () мне это не совсем понятно.

Что я хочу сделать в псевдокоде:

DataFrame.MyKeyColumn = If (DataFrame.Condtional is NaN) then:

concatenate[ DataFrame.keyfield1,"_",DataFrame.keyfield2,"_",DataFrame.keyfield3,"_",keyfield4] 
else:
concatenate[ DataFrame.keyfield1,"_",DataFrame.keyfield2,"_",DataFrame.condtionalfield,"_",DataFrame.keyfield3,"_",keyfield4]

вR вы можете сделать что-то вроде:

dplyr::mutate(Conditional = if(is.na(mycondtion)){paste(keyfield1,keyfield2)}, else {paste(keyfield1,condtionalfield,keyfield2)})

Пример моих текущих данных

Идеальная конечная цель

Любая помощьбудет действительно оценен.Я надеюсь, что просто не понимаю, как работает pandas.assign (), или мне нужно вложить несколько функций, таких как pandas.where ().

1 Ответ

0 голосов
/ 21 ноября 2018

Вы можете использовать numpy's where для установки условной логической логики для заполнения других столбцов. Вот пример, основанный на вашем псевдокоде:

df.MyKeyColumn = np.where(df.Condtional.isna(),
df.keyfield1+"_"+df.keyfield2+"_"+df.keyfield3+"_"+keyfield4,
df.keyfield1+"_"+df.keyfield2+"_"+df.condtionalfield+"_"+df.keyfield3+"_"+keyfield4)

Вот упрощенный пример использования:

import pandas as pd
import numpy as np

# Create a dummy dataframe
df = pd.DataFrame(data={"col1":[np.nan, 1, np.nan], "col2":[4, 5, 6]})

# Create a new column which fills in missing col1 values with data from col2
df["new_col"] = np.where(df["col1"].isna(), df["col2"], df["col1"])

# Create a new column which fills in missing col1 values with scalar value
df["new_col2"] = np.where(df["col1"].isna(), 7, df["col1"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...