Транспонирование нескольких столбцов в строку в Python - PullRequest
0 голосов
/ 01 октября 2018

У меня есть сильно вложенный файл 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,  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

1 Ответ

0 голосов
/ 01 октября 2018

Если каждая новая строка имеет фиксированную ширину 5, вы можете использовать reshape

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...