Следующее решение захватывает индекс, где y!='---'
, а затем суммирует значения в a['x']
& a['y']
для этого индекса. Важно преобразовать dtype в int
перед суммированием.
a = pd.DataFrame({'x': ['1', '2', '3', '4', '5'], 'y': ['1', '---', '1', '1', '1']})
a['z'] = None
indexer = a['y'].loc[lambda x:x!='---'].index
a['z'] = a[a.index.isin(indexer)]['x'].astype(int) + a[a.index.isin(indexer)]['y'].astype(int)
a.loc[a['z'].isna(), 'z'] = '---'
b = a[['z']]
print(b)
#Output
z
0 2
1 ---
2 4
3 5
4 6
Предполагается, что '---'
является единственным символом в вашем наборе данных, и там, где условие не выполняется, значения z
равны NaN
. Эти значения NaN
затем устанавливаются на ---
в a['z']
.