строковый метод панд для обработки десятичных знаков - PullRequest
4 голосов
/ 03 июля 2019

Вот мой маленький примерный фрейм данных:

import pandas as pd
import numpy as np

size = 10000

arr1 = np.tile([1/5000,1/12000,1/7000], (size,1))

df = pd.DataFrame(arr1, columns = ['col1','col2','col3'])
df[['col1','col2','col3']] = df[['col1', 'col2', 'col3']].astype(str)

Я хочу использовать метод строк панд для преобразования строк 'col1', ' col2' and 'col3' в 10-десятичные разряды (так что '0.0002' becomes '0.0002000000', '8.333333333333333e-05' becomes '0.0000833333' и '0.00014285714285714287' becomes '0.0001428571'). Какой самый питонный способ добиться этого?

РЕДАКТИРОВАТЬ1:

Добавлен еще один столбец, чтобы лучше представить мою маленькую проблему

EDIT2: Я хочу упомянуть, что я знаю, что df.apply() и df.applymap() существуют, и они могут выполнить работу, но, учитывая также производительность, я ищу векторизованный способ достижения этого. Поэтому я предпочитаю строковые методы панд. Конечно, если никакие такие строковые методы не могут достичь моей цели, я с радостью приму верхний ответ.

1 Ответ

2 голосов
/ 03 июля 2019

Вы можете использовать метод df.round () .

  • Если вы хотите, чтобы все значения столбцов были округлены до 10 десятичных знаков:

df.round (10)

  • Если вы хотите, чтобы только выбранные значения столбцов были округлены до 10 десятичных знаков:

df.round ({'Col_1': 10, 'Col_3': 10})

  • Если вы хотите, чтобы ряд значений столбцов был округлен до 10 десятичных знаков:

decimals = pd.Series ([10, 10, 10], index = ['Col_1', 'Col_2', 'Col_3'])

df.round (десятичные)

Для более подробной информации, вы можете посетить ниже пример Ссылка: https://pandas.pydata.org/pandasdocs/version/0.22/generated/pandas.DataFrame.round.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...