Как получить целую часть столбца с плавающей точкой в ​​pandas - PullRequest
2 голосов
/ 17 февраля 2020

Предположим, у меня есть датафрейм df, как показано ниже

    qty
0   1.300
1   1.909

Теперь я хочу извлечь только целую часть столбца qty, и df должен выглядеть как

   qty
0   1
1   1

Tried используя df ['qty']. round (0), но не получил желаемого результата, так как округляет число до ближайшего целого числа.

Java имеет функцию intValue (), которая выполняет желаемое операция. Есть ли подобная функция в pandas?

Ответы [ 2 ]

3 голосов
/ 17 февраля 2020

Преобразование значений в целые числа по Series.astype:

df['qty'] = df['qty'].astype(int)
print (df)
   qty
0    1
1    1

Если выше не возможно, используйте numpy.modf для значений извлечения до . :

a, b = np.modf(df['qty'])
df['qty'] = b.astype(int)
print (df)
   qty
0    1
1    1

Или делением до ., но оно должно быть медленным, если большой DataFrame:

df['qty'] = b.astype(str).str.strip('.').str[0].astype(int)

Или использовать numpy.floor:

df['qty'] = np.floor(df['qty']).astype(int)
1 голос
/ 17 февраля 2020

Вы можете использовать метод floordiv:

df['col'].floordiv(1).astype(int)

Например:

        col
0  9.748333
1  6.612708
2  2.888753
3  8.913470
4  2.354213

Выход:

0    9
1    6
2    2
3    8
4    2
Name: col, dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...