Как удалить .0 при чтении CSV с помощью Pandas

#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)