Панды wide_to_long со случайными переменными id - PullRequest
0 голосов
/ 12 июня 2018

У меня возникли проблемы с функцией wide_to_long.Этот пример работает нормально:

Loc   Nom   Meas-1   Meas-2   Meas-3
200   A     0.8      1.1      1.2
201   B     4.9      5.1      5.2

pd.wide_to_long(df, 'Meas', i=['Loc','Nom'], j='Ref', sep='-').reset_index()

Loc   Nom   Meas   Ref
200   A     0.8    1
200   A     1.1    2
200   A     1.2    3
201   B     4.9    1
201   B     5.1    2
201   B     5.2    3

Моя проблема в том, что строка, которая следует за "Measure-" в моем кадре данных, представляет собой случайный буквенно-цифровой серийный номер.Базовый пример:

Loc   Nom   Meas-1   Meas-2D   Meas-3
200   A     0.8      1.1       1.2
201   B     4.9      5.1       5.2

pd.wide_to_long(df, 'Meas', i=['Loc','Nom'], j='Ref', sep='-').reset_index()

Loc   Nom   Meas   Meas-2D   Ref
200   A     0.8    1.1       1
200   A     1.2    1.1       3
201   B     4.9    5.1       1
201   B     5.2    5.1       3

Хуже того, если за всеми частями "Meas-" следуют строки, содержащие буквы, я получаю пустую ошибку в кадре данных:

Loc   Nom   Meas-1D   Meas-2D   Meas-3D
200   A     0.8       1.1       1.2
201   B     4.9       5.1       5.2

pd.wide_to_long(df, 'Meas', i=['Loc','Nom'], j='Ref', sep='-').reset_index()

Empty DataFrame

Как я могузаставить эту функцию использовать любую строку, следующую за "Meas-" для Ref, а не только цифры?

Спасибо!

1 Ответ

0 голосов
/ 12 июня 2018

Вы должны посмотреть на параметр suffix. (Если вы не упомянули его, он по умолчанию будет искать число '\d+', поскольку '2D' не является числом, тогда ничего не вернется)

pd.wide_to_long(df, 'Meas', i=['Loc','Nom'], j='Ref', sep='-',suffix='\w+').reset_index()
Out[289]: 
   Loc Nom Ref  Meas
0  200   A   1   0.8
1  200   A  2D   1.1
2  200   A   3   1.2
3  201   B   1   4.9
4  201   B  2D   5.1
5  201   B   3   5.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...