擅长:python、mysql、java
<p>使用<code>pivot_table</code>和<code>unstack</code>:</p>
<pre><code>df.pivot_table(
index='object_id', columns='timestampHour', values='value'
).unstack().rename('value').reset_index()
</code></pre>
<p/>
<pre><code> timestampHour object_id value
0 2016/1/1 00:00 1 2.0
1 2016/1/1 00:00 2 NaN
2 2016/1/1 00:00 3 1.0
3 2016/1/1 01:00 1 1.0
4 2016/1/1 01:00 2 3.0
5 2016/1/1 01:00 3 NaN
6 2016/1/1 02:00 1 NaN
7 2016/1/1 02:00 2 3.0
8 2016/1/1 02:00 3 2.0
</code></pre>
<hr/>
<p>要了解这一点的原因,可以查看中间的<code>pivot_table</code>:</p>
<pre><code>timestampHour 2016/1/1 00:00 2016/1/1 01:00 2016/1/1 02:00
object_id
1 2.0 1.0 NaN
2 NaN 3.0 3.0
3 1.0 NaN 2.0
</code></pre>
<p>如果没有为<code>object_id</code>和<code>timestampHour</code>的组合找到值<em>,则将<code>NaN</code>添加到表中。当您使用<code>unstack</code>时,这些<code>NaN</code>会被保留,这样您就可以得到所需的结果,并表示缺少的值</p>