在python中将多列转换为行
我有一个嵌套很深的json文件,我将其展平,并获得如下输出,在一列中有行,并附加了数值。是否有任何方法可以将其删除并按输出中所示将其按行排列在python中将多列转换为行,python,pandas,Python,Pandas,我有一个嵌套很深的json文件,我将其展平,并获得如下输出,在一列中有行,并附加了数值。是否有任何方法可以将其删除并按输出中所示将其按行排列 输入文件 102_ip_addr, 102_ip_family, 102_ip_mask_addr, 102_email, 102_failed_attempts,103_ip_addr, 103_ip_family, 103_ip_mask_addr, 103_email, 103_failed_attempts, 3705824725, 2
输入文件
102_ip_addr, 102_ip_family, 102_ip_mask_addr, 102_email, 102_failed_attempts,103_ip_addr, 103_ip_family, 103_ip_mask_addr, 103_email, 103_failed_attempts,
3705824725, 2, 4294967295, abc@xyz.com, 0,3705824825, 4, 4294967625, sdf@xyz.com, 0
输出:
ip_addr, ip_family, ip_mask_addr, email, failed_attempts
3705824725, 2, 4294967295, abc@xyz.com, 0
3705824825, 4, 4294967625, sdf@xyz.com, 0
如果每一新行都有固定宽度5,则可以使用
重塑
pd.DataFrame(df.values.reshape(-1,5),columns=['addr','family','mask_addr','email','attempts'])
Out[580]:
addr family mask_addr email attempts
0 3705824725 2 4294967295 abc@xyz.com 0
1 3705824825 4 4294967625 sdf@xyz.com 0
更新
df.columns=df.columns.str.split('_',1).str[1]
df.melt().assign(newrow=lambda x : x.groupby(x['variable']).cumcount() ).pivot('newrow','variable','value')
Out[596]:
variable email failed_attempts ip_addr ip_family ip_mask_addr
newrow
0 abc@xyz.com 0 3705824725 2 4294967295
1 sdf@xyz.com 0 3705824825 4 4294967625
谢谢你在我的文件中的快速回答,我刚才给了5个专栏作为参考。我正在尝试删除第一个
之前的数值,然后将它们放入行中