如何按两列对大数据框进行排序?

时间:2021-01-30 07:55:32

标签: python pandas dataframe

我有一个大数据框,它记录了股票市场的所有价格信息。

在这个数据框中,有两个索引信息,分别是'time'和'con'

示例如下:

In [15]: df = pd.DataFrame(np.reshape(range(20), (5,4)))

In [16]: df
Out[16]: 
    0   1   2   3
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
3  12  13  14  15
4  16  17  18  19

In [17]: df.columns = ['open', 'high', 'low', 'close']

In [18]: df['tme'] = ['9:00','9:00', '9:01', '9:01', '9:02']

In [19]: df['con'] = ['a', 'b', 'a', 'b', 'a']

In [20]: df
Out[20]: 
   open  high  low  close   tme con
0     0     1    2      3  9:00   a
1     4     5    6      7  9:00   b
2     8     9   10     11  9:01   a
3    12    13   14     15  9:01   b
4    16    17   18     19  9:02   a

我想要的是一些像这样的数据帧:

## here is the close dataframe, which only contains close info, indexed by 'time' and 'con'
Out[31]: 
       a     b
9:00   3   7.0
9:01  11  15.0
9:02  19   NaN

我怎样才能得到这个数据框?

2 个答案:

答案 0 :(得分:2)

使用df.pivot

In [117]: df.pivot('tme', 'con', 'close')
Out[117]: 
con      a     b
tme             
9:00   3.0   7.0
9:01  11.0  15.0
9:02  19.0   NaN

答案 1 :(得分:1)

一种解决方案是使用 pivot_table。试试这个:

 df.pivot_table(index=df['tme'], columns='con', values='close')

解决办法是:

enter image description here