Получение длины дробной части десятичной дроби - PullRequest
1 голос
/ 24 сентября 2019

Я хочу получить длину дробной части, например: 0,063 - 3, 0,04 -2, я получил дробную часть, используя это

df['fractional_part'] = np.modf(df['mod_text'])[0]

Я пытался получить количество дробной части, используя это

df['count_fractional_part']  = df['fractional_part'].apply(lambda x:int(len(str(x).split('.')[1])))

Но я хочу сделать это без применения функции. Есть ли способ сделать это с помощью numpy

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019

Йо может делать:

[len(str(x).split(".")[1]) for x in df['mod_text']]

Так что вы также не используете np.modf.

Действительно, np.modf у вас есть проблемы с округлением.Если вы сделаете: np.modf(12.2)[0], вы получите 0,1999999999999993, и, следовательно, 16 цифр ... В то время как вы делаете len(str(12.2).split(".")[1], вы получите 1, как и ожидалось

2 голосов
/ 24 сентября 2019

Преобразуйте значения в строки, затем используйте Series.str.split, выберите второе значение и получите длину на Series.str.len:

df = pd.DataFrame({'mod_text':[0.063, 0.04]})

df['count_fractional_part'] = df['mod_text'].astype(str).str.split('.').str[1].str.len()

print (df)
   mod_text  count_fractional_part
0     0.063                      3
1     0.040                      2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...