Excel хранит проценты в десятичных числах. Представление% - это просто «представление» данных, а не свойство базового значения float
. Если вы заранее не знаете своих столбцов, вы можете определить логику расследования: -
Сначала прочитайте ваш файл как обычно (Excel или CSV):
df = pd.read_excel('file.xlsx') # or pd.read_csv('file.csv')
Затем укажите столбцы, которые читаются как float
:
float_cols = df.select_dtypes(include=[np.float]).columns
Теперь фильтр для тех столбцов, где все значения находятся в диапазоне от 0 до 1,0. Это не является водонепроницаемым, так как серия Boolean
также будет включена. Таким образом, мы можем добавить дополнительное условие, чтобы было не менее n различных значений.
pct_cols = [x for x in float_cols if df[x].between(0, 1).all() and len(df[x].unique()) > 2]
Наконец, преобразовать десятичные дроби в диапазоне [0, 1]
в проценты в диапазоне [0, 100]
:
df[pct_cols] = df[pct_cols] * 100
Вот полный рабочий пример:
df = pd.DataFrame({'A': [0.1341234, 0.563465, 1.00, 0.00, 0.456546],
'B': [True, False, True, True, True],
'C': [1.0, 0.0, 1.0, 1.0, 0.0]})
float_cols = df.select_dtypes(include=[np.float]).columns
pct_cols = [x for x in float_cols if df[x].between(0, 1).all() and len(df[x].unique()) > 2]
df[pct_cols] = df[pct_cols] * 100
print(df)
A B C
0 13.41234 True 1.0
1 56.34650 False 0.0
2 100.00000 True 1.0
3 0.00000 True 1.0
4 45.65460 True 0.0