The idea here is
import numpy as np
import pandas as pd
np.random.seed(42)
df = pd.DataFrame({'C' : np.random.randn(8)})
print(df)
C 0 0.496714 1 -0.138264 2 0.647689 3 1.523030 4 -0.234153 5 -0.234137 6 1.579213 7 0.767435
df['C_pos'] = df['C'].where(df['C']>0, other=0)
df['C_neg'] = df['C'].where(df['C']<0, other=0)
print(df)
C C_pos C_neg 0 0.496714 0.496714 0.000000 1 -0.138264 0.000000 -0.138264 2 0.647689 0.647689 0.000000 3 1.523030 1.523030 0.000000 4 -0.234153 0.000000 -0.234153 5 -0.234137 0.000000 -0.234137 6 1.579213 1.579213 0.000000 7 0.767435 0.767435 0.000000
Sample use case: Split a market value column into longs and shorts.
Ref:-
(pd.__version__, np.__version__)
('1.0.3', '1.18.1')