<p>我的方法是将csv读入2个df,一个有bid-ask列,一个没有bid-ask列:</p>
<pre><code>In [99]:
t="""time1,stockA,bid,1
time2,stockA,ask,1.1
time3,stockB,ask,2.1
time4,stockB,bid,2.0
time5,stockA,bid,1.1
time6,stockA,ask,1.2
time7,stockA,high,1.5
time8,stockA,low,0.5"""
df = pd.read_csv(io.StringIO(t), header=None, names=['time', 'stock', 'bid', 'ask'], usecols=['time', 'stock'])
df
Out[99]:
time stock
0 time1 stockA
1 time2 stockA
2 time3 stockB
3 time4 stockB
4 time5 stockA
5 time6 stockA
6 time7 stockA
7 time8 stockA
</code></pre>
<p>对于第二个df,我们可以调用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.pivot.html#pandas.DataFrame.pivot" rel="nofollow">^{<cd1>}</a>来旋转df以从'bid'值创建列,我们需要重置索引,然后我们可以将2个df合并在一起以获得您想要的结果,如果需要,您可以用空字符串替换NaN值:</p>
<pre><code>In [102]:
df_new = pd.read_csv(io.StringIO(t), header=None, names=['time', 'stock', 'bid', 'ask'], usecols=['time','bid','ask'])
df_new = df_new.pivot(columns ='bid', values='ask', index='time')
df_new = df_new.reset_index()
df = df.merge(df_new)
df
Out[102]:
time stock ask bid high low
0 time1 stockA NaN 1.0 NaN NaN
1 time2 stockA 1.1 NaN NaN NaN
2 time3 stockB 2.1 NaN NaN NaN
3 time4 stockB NaN 2.0 NaN NaN
4 time5 stockA NaN 1.1 NaN NaN
5 time6 stockA 1.2 NaN NaN NaN
6 time7 stockA NaN NaN 1.5 NaN
7 time8 stockA NaN NaN NaN 0.5
</code></pre>