#arrays #pandas #string #dataframe
#массивы #pandas #строка #фрейм данных
Вопрос:
У меня есть следующий фрейм данных,
AirPressure... WindDirection
Date Location1 Location2.......Location8593 Location8594 Location8595
2010-01-01 xxx. xxx xxx xxx. xxx.
2010-01-02 xxx. xxx xxx xxx. xxx.
2010-01-03 xxx. xxx xxx xxx. xxx.
....
2010-01-01 xxx. xxx xxx xxx. xxx.
...
2020-10-10 xxx. xxx xxx xxx. xxx.
Я пытаюсь превратить его в приведенный ниже.
Date AirPressure-Location1 SoilMoisture-Location1.....WindDirection-Location8595
2010-01-01 xxx. xxx xxx
......
2020-10-10 xxx. xxx xxx
Я запускаю следующую команду,
frame.columns = ['-'.join(col).strip() for col in frame.columns.values]
Но вместо этого я получаю,
Date Location1-AirPressure Location1-SoilMoisture.....Location8595-WindDirection
2010-01-01 xxx. xxx xxx
......
2020-10-10 xxx. xxx xxx
Как мне перевернуть имена, как я хочу выше?
Ответ №1:
Вы можете использовать f-string
s:
frame.columns = [ f'{b}-{a}' for a, b in frame.columns]
Или измените порядок столбцов путем индексации:
frame.columns = ['-'.join(col[::-1]).strip() for col in frame.columns]
Или:
frame = frame.swaplevel(1, 0, axis=1)
frame.columns = ['-'.join(col).strip() for col in frame.columns]
Комментарии:
1. есть ли разница в. используя frame.columns и frame.columns.values?
2. @anarchy — если использовать
frame.columns.values
его, преобразуйте столбцы в массив numpy, но это не обязательно, потому что работает так же, какframe.columns
и, поэтому опущено, потому что упрощенное решение.