Dataframe连接列

时间:2017-10-11 08:35:13

标签: python-3.x pandas dataframe

我有一个带有多索引(ID,日期,LID)的数据框以及从0到N的列,如下所示:

Data

我想按ID和Date对数据帧进行分组,并将列连接到同一行,使其看起来像这样:

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class scroll{

    public static void main(String[] args) {
        JFrame frame = new JFrame("Example");
        frame.setSize(500, 500);
        frame.setLayout(null);

        JPanel panel = new JPanel();
        panel.setBackground(Color.BLACK);
        panel.setBounds(5, 5, 450, 600);

        frame.add(panel);

        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

}

2 个答案:

答案 0 :(得分:3)

使用pd.concatpd.DataFrame.xs

pd.concat(
    [df.xs(x, level=2) for x in df.index.levels[2]],
    axis=1, ignore_index=True
)

                0  1  2  3  4  5  6  7  8  9
ID  Date                                    
112 11-02-2014  0  1  5  6  7  2  4  5  3  4
    30-07-2015  5  7  1  1  2  3  2  8  7  1

答案 1 :(得分:2)

使用unstack + sort_index

df = df.unstack().sort_index(axis=1, level=1)
#for new columns names
df.columns = np.arange(len(df.columns))
print (df)
                0  1  2  3  4  5  6  7  8  9
ID  Date                                    
112 11-02-2014  0  1  5  6  7  2  4  5  3  4
    30-07-2015  5  7  1  1  2  3  2  8  7  1