<p>由于pandas的当前形式假定时间序列数据在索引中是按时间排列的,而不是在列中,因此至少暂时地将数据帧转置将允许使用许多内置方法,例如<code>shift</code>/<code>diff</code>/<code>pct_change</code>/等</p>
<pre><code>In [78]: df = DataFrame(np.random.rand(100, 3) * 100,
columns=['Day1', 'Day2', 'Day3'])
In [79]: df.head()
Out[79]:
Day1 Day2 Day3
0 27.113276 0.827977 37.059887
1 48.817798 19.335033 12.476411
2 27.001015 18.147742 33.094676
3 38.428321 95.609824 72.395564
4 63.626472 36.207677 1.328216
In [80]: dft = df.T
In [82]: dft.ix[:, :5]
Out[82]:
0 1 2 3 4 5
Day1 27.113276 48.817798 27.001015 38.428321 63.626472 25.900132
Day2 0.827977 19.335033 18.147742 95.609824 36.207677 0.191767
Day3 37.059887 12.476411 33.094676 72.395564 1.328216 37.011027
In [89]: dft.pct_change().ix[:, :5]
Out[89]:
0 1 2 3 4 5
Day1 NaN NaN NaN NaN NaN NaN
Day2 -0.969462 -0.603935 -0.327887 1.488004 -0.430934 -0.992596
Day3 43.759576 -0.354725 0.823625 -0.242802 -0.963317 191.999688
In [94]: chg = (dft.pct_change().dropna() < .95).T.astype(int)
In [95]: chg.head()
Out[95]:
Day2 Day3
0 1 0
1 1 1
2 1 1
3 0 1
4 1 1
</code></pre>