#pandas #csv #decimal #precision
#pandas #csv #десятичная #точность
Вопрос:
У меня есть файл CSV, который я считываю в фрейм данных pandas. Все числа не имеют десятичных знаков, но как только я читаю это в dframe, оно добавляет завершающий ноль к числу с десятичной запятой.
1205 становится 1205.0
Как мне избавиться от 0 во время pd.read_csv?
Я знаю, что могу удалить .0 после того, как он был прочитан в dataframe, но мне действительно нужно, чтобы этого вообще не происходило.
Я попробовал float_precision=’round_trip’
Я попытался принудительно ввести dtype во время read_csv
Часть кода, который я пробовал:
df = pd.read_csv('xxx.csv', header=None, dtype={'T': object,'Date': object,'VAL1': float, 'VAL2': float, 'VAL3': float, 'VAL4': float, 'VAL5': float})
OR
df = pd.read_csv('xxx.csv', header=None, float_precision='round_trip')
Ответ №1:
Вы сказали, что пытались принудительно dtype
во время read_csv
, но я не понимаю, почему следующее не решит вашу проблему:
pd.read_csv('xxx.csv', dtype=str)
Комментарии:
1. Блестяще. Работает как шарм.
2. лучший ответ чувак
Ответ №2:
Прочитайте файл CSV:
import pandas as pd
file='cce_classification.csv'
df=csv_into_df(file)
Заполните nan значением 0:
df=df.fillna(0)
Получите столбцы df и повторите их. измените columntype на int с помощью try block:
for column in dfcolumnlist:
try:
df[column]=df[column].astype(int)
except Exception as e:
print(e)
print(df)
Окончательный код:
file='cce_classification.csv'
def remove_dot_zeros_from_df(file):
df=pd.read_csv(file)
df=df.fillna(0)
dfcolumnlist=df.columns
for column in dfcolumnlist:
try:
df[column]=df[column].astype(int)
except Exception as e:
print(e)
return df
df=remove_dot_zeros_from_df(file)