pandas - 为每列创建多行

时间:2017-03-24 15:03:20

标签: python pandas

我正在尝试将一些数据转换为更有用的格式,从.xls到.csv与pandas。

我已经加载了这样的数据:

xls = pd.ExcelFile('file.xls')

返回一个如下所示的数据框:

Name    Event1    Date1    Event2    Date2    Event3    Date3
Joe     jump      1.1.13   skip      1.2.13   hop       1.3.14
Jack    skip      1.2.12   run       1.5.14   NA        NA

我想重新格式化数据,因此对于参与其日期的每个事件,名称会重复多次。即。

Name    Event   Date
Joe     jump    1.1.13
Joe     skip    1.2.13

在某种程度上我可以移除所有NA。我在xcel中有多张表,这就是为什么我想以这种方式连接所有内容。

是否有一个简单的命令或我是否坚持使用for循环?

谢谢!

1 个答案:

答案 0 :(得分:3)

使用pd.lreshape这是将广泛格式化的DF转换为长格式{1}}的方法。

此方法接受字典作为其groups参数,其中以特定前缀开头的列名称聚集在单个健康列下。

d = dict(Event=df.filter(regex="^Event").columns, Date=df.filter(regex="^Date").columns)
pd.lreshape(df, d)

enter image description here