Обновлять первичное значение только в том случае, если вторичное значение не пустое или не указано - PullRequest
2 голосов
/ 24 февраля 2020

У меня есть этот кусок кода, и я хочу убедиться, что значение первой переменной (df ['Given Name']) обновляется, только если вторая переменная (df ['Maiden Name']) не пуста или нан.

df['Given Name'] = df['Given Name'] + ' ' + df['Maiden Name']

каков кратчайший путь для достижения этой цели?

Ответы [ 3 ]

1 голос
/ 24 февраля 2020

Идея заключается в добавлении значений только в том случае, если условия совпадения с Series.notna связаны с & для побитового И при сравнении не равных пустых значений:

df = pd.DataFrame({'Given Name':['a','b','c'],
                   'Maiden Name':['d',np.nan,'']})

m = df['Maiden Name'].notna() & df['Maiden Name'].ne('')
print (m)
0     True
1    False
2    False
Name: Maiden Name, dtype: bool

df.loc[m, 'Given Name'] += ' ' + df.loc[m, 'Maiden Name']
print (df)
  Given Name Maiden Name
0        a d           d
1          b         NaN
2          c            
0 голосов
/ 24 февраля 2020

Использование:

m = df['Maiden Name'].notna() | df['Maiden Name'].str.len().gt(0)

df['Given Name'] = np.where(m, df['Given Name'] + ' ' + df['Maiden Name'], df['Given Name'])
0 голосов
/ 24 февраля 2020

Один из вариантов может быть (при условии, что в Maiden Name нет окружающих пробелов или они не важны):

df['Given Name'] = df['Given Name'] + (' ' + df['Maiden Name']).str.strip()
...