Я хочу заменить все значения в столбце в многоиндексном фрейме данных, я нашел грязный способ сделать это, но я ищу что-то более чистое
Данные импортируются из .xlsx, если этопомогает вообще, поскольку он мог удалить "," из первого столбца, используя оператор тысяч.
все числа являются строками, поэтому мне нужно преобразовать их в числа с плавающей запятой или в целые числа, поэтому функция str.replace
Пример кадра данных
Name 0 1 ...
Col A B A B ...
0 409511 30.3% 355529 30.3% ...
1 332276 20.3% 083684 20.3% ...
2 138159 10.3% 570834 10.3% ...
Если я использую
df['0','B']= df['0','B'].str.replace('%','').astype(float)
Это работает, но я не хочу делать это для каждого отдельного столбца
Я пытался поиграться с
df.loc [:, pd.IndexSlice [:, 'B']]. Str.replace ('%', ''). Astype (float)
но получаю ошибку
Объект 'DataFrame' не имеет атрибута 'str'
Я пытался с
df.loc [:, pd.IndexSlice[:, 'Percent']]. Replace ('%', '')
, который возвращает фрейм данных без ошибок, но ничего не делает с ним
Если я делаю
df.loc [:, pd.IndexSlice [:, 'Percent']]. Replace ('%', ''). Astype (float)
не удалось преобразовать строку в float: '33 .3% '
Я прочиталhttps://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html но ничего не заменить
Мне также не удалось найти что-либо в этом https://jakevdp.github.io/PythonDataScienceHandbook/03.05-hierarchical-indexing.html