我正在尝试将一些数据转换为更有用的格式,从.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循环?
谢谢!
答案 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)