pd.get_dummies
, mask
ve mul
n = {True: 'main_val', False: 'sub_val'}
m = pd.get_dummies(df.value > 0).rename(columns=n)
df.drop('value', 1).join(m.mask(m == 0).mul(df.value, 0))
col1 col2 time sub_val main_val
0 A sdf 16:00:00 NaN 100.0
1 B sdh 17:00:00 -40.0 NaN
2 A sf 18:00:45 NaN 300.0
3 D sfd 20:04:33 -89.0 NaN
m.mask(m == 0)
'a bakarsanız, bunun nasıl çalıştığı daha net olur.
sub_val main_val
0 NaN 1.0
1 1.0 NaN
2 NaN 1.0
3 1.0 NaN
pd.get_dummies
sıfırları ve olanları bize verir. Sonra tüm sıfırları
np.nan
'a yaparım.
mul
ile çarptığımda,
df.value
sütunu her iki sütunda da yayınlanır ve sonuçlarımız vardır. Veritabanına eklemek için
join
kullanıyorum.
Biz numpy
v = df.value.values[:, None]
m = v > 0
n = np.where(np.hstack([m, ~m]), v, np.nan)
c = ['main_val', 'sub_val']
df.drop('value', 1).join(pd.DataFrame(n, df.index, c))
sub_val main_val
0 NaN 1.0
1 1.0 NaN
2 NaN 1.0
3 1.0 NaN
@MaxU yapılabilir hızını artırabilir - teşekkür ederim. – jezrael