我有一个具有以下结构的数据框:
ssid| ccnt| table_read | table_write|execution_time
123 2 [table_a,table_b] table_c 12
456 3 [table_d,table_f] table_g 25
当我对“ table_read”列使用爆炸功能时,它会重复执行时间:
ssid| ccnt| table_read | table_write|execution_time
123 2 table_a table_c 12
123 2 table_b table_c 12
456 3 table_d table_g 25
456 3 table_f table_g 25
但是我不可能发生,因为当我总结它时,它返回错误的结果。我希望得到以下结果:
ssid| ccnt| table_read | table_write | execution_time
123 2 table_a table_c 12
123 2 table_b table_c 0
456 3 table_d table_g 25
456 3 table_f table_g 0
可能吗?
之后explode
使用Series.mask
上execution_time
掩盖的重复值ssid
用的填充值0
:
d = df.explode('table_read')
d['execution_time'] = d['execution_time'].mask(d['ssid'].duplicated(), 0)
或使用布尔索引来将重复的值填充为0
:
d.loc[d['ssid'].duplicated(), 'execution_time'] = 0
结果:
print(d)
ssid ccnt table_read table_write execution_time
0 123 2 table_a table_c 12
0 123 2 table_b table_c 0
1 456 3 table_d table_g 25
1 456 3 table_f table_g 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句