Сокращение десятичных знаков в столбце CSV

#python #pandas #csv

Вопрос:

я очень новичок в Python и программировании, поэтому, пожалуйста, объясните это просто. Я хочу написать код, который может уменьшить количество десятичных знаков в одном столбце в середине csv-файла. Я знаю, что большая часть этого кода неверна, но я застрял, поэтому, пожалуйста, помогите и объясните мне, как сделать его лучше.

 import pandas as pd
 
File = pd.read_csv("D:filesTest2.csv",encoding = 'latin1',usecols = ["number"])
 
roundednumber = round (file, 10)

remaining = pd.read_csv("D:fileTest2.csv",encoding = 'latin1',usecols = ["Name", "Age", "Location"])

Output = remaining, rounded number
Output.to_csv("D:filesTest2Ausgabe.csv")
 

Ответ №1:

Это должно сработать для столбца с именем ColumnName:

 File['ColumnName'] = File['ColumnName'].round()
 

Вышесказанное не округляется до знаков после запятой. Это значение округлится до двух знаков после запятой:

 File['ColumnName'] = File['ColumnName'].round(2)
 

В ответ на ваш комментарий ниже, спрашивающий, как округлить столбец с именем «Число» до 8 знаков после запятой и присвоить его старому фрейму данных, вы можете сделать следующее:

 File['Number'] = File['Number'].round(8)
 

Комментарии:

1. Первая проблема: я могу получить только 6 знаков после запятой, я пробовал с 8 и 10, и это работает только с 6 или ниже Вторая проблема: я не знаю, как заменить старые числа новыми

2. Мое последнее редактирование должно решить вашу вторую проблему. Я не уверен, что понял вашу первую колонку. @Vinstand

3. Я все еще не понимаю этого. Например, у меня есть следующие столбцы: номер,имя,возраст,местоположение. Затем я округляю номер столбца, чтобы получить 8 знаков после запятой. Как я могу записать новые числа в свой старый csv-файл со всеми остальными столбцами, чтобы у меня был один файл с 4 столбцами, а в моем столбце чисел было только 8 знаков после запятой?

4. @Vinstand только что изменил мой ответ в ответ на ваши комментарии.

5. @Vinstand: ваш старый CSV-файл не будет изменен, если вы не запишете измененный фрейм данных обратно на диск с помощью File.to_csv('yourfilename.csv') . Я бы предложил создать новый файл вместо перезаписи исходного файла, чтобы избежать возможной потери данных.