我有一个用CSV文件创建的pandas数据框。 数据框看起来像这样
srvr_name log_type hour
server1 impressionWin 18:00:00
server1 transactionWin 18:00:00
server2 impressionWin 18:00:00
server2 transactionWin 18:00:00
我想从中获得:
srvr_name impressionWin transactionWin hour
server1 true true 18:00:00
server2 true true 18:00:00
在熊猫中实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
将 join
与 get_dummies
df.join(pd.get_dummies(df.log_type)).groupby(['srvr_name', 'hour']).sum().astype(bool)
impressionWin transactionWin
srvr_name hour
server1 18:00:00 True True
server2 18:00:00 True True
答案 1 :(得分:1)
您可以使用:
df = pd.crosstab([df.srvr_name, df.hour], df.log_type).astype(bool).rename_axis(None, 1).reset_index()
输出:
srvr_name hour impressionWin transactionWin
0 server1 18:00:00 True True
1 server2 18:00:00 True True