Python / Pandas Dataframe - заменить десятичную точность значением int, когда 0 или 0 округляет до n знаков после запятой - PullRequest
1 голос
/ 30 января 2020

Использование приведенной ниже конструкции для удаления десятичной точности (. & 0), когда значение равно, скажем, 3,0, и округление до 4 знаков после запятой, когда значение равно, например, 3.12345

import pandas as pd
df1 = pd.DataFrame({'Price':[1.0,2.12345,3.0,4.67892]})
df1["Price"] = df1["Price"].apply(lambda x: round(x,4) if x%1 else int(x))
print(df1)

Округление работает, но не преобразование в int.

1 Ответ

1 голос
/ 30 января 2020

Вам необходимо преобразовать столбец в тип объекта, используя dtype=object:

df1["Price"] = np.array([int(x) if x%1==0 else round(x,4) for x in df1["Price"].values ], dtype=object)

    Price
0       1
1  2.1234
2       3
3  4.6789

Как вы можете видеть ниже, объекты содержат int и float, где это необходимо:

[print (type(i)) for i in df1["Price"].values]

Out[1]
<class 'int'>
<class 'numpy.float64'>
<class 'int'>
<class 'numpy.float64'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...