Вы можете нормализовать ненормализованный столбец данных и преобразовать в целое число (по вашему вопросу) с помощью:
df['perc_col'] = df['perc_col'].apply(lambda x : int(x) if x > 1 else int(100*x))
Вывод
id perc_col
0 1 30
1 2 45
2 3 76
3 4 10
4 5 0
5 6 29
6 7 93
7 8 15
8 9 31
9 10 45
По вашим комментариям, если у вас есть NaN
значения и хотите оставить их без изменений, вы не можете преобразовать столбец в int. Вы можете оставить его как число с плавающей точкой, но изменить его на целые числа следующим образом:
df['perc_col'] = df['perc_col'].apply(lambda x : x//1 if x > 1 else 100*x//1)
Выведите это время (при изменении последнего значения в исходном словаре на np.nan
):
id perc_col
0 1 30.0
1 2 45.0
2 3 76.0
3 4 10.0
4 5 0.0
5 6 29.0
6 7 93.0
7 8 15.0
8 9 31.0
9 10 NaN
Чтобы удовлетворить ваше второе дополнительное требование обработки строк, вы можете по существу игнорировать строки, если измените команду на:
df['perc_col'] = df['perc_col'].apply(lambda x : x if isinstance(x, str) else (x//1 if x > 1 else 100*x//1))