Панды читают значения файла CSV в виде текста без преобразования в плавающее в первую очередь - PullRequest
2 голосов
/ 10 октября 2019

Я загружаю данные из файла csv во фрейм данных pandas, столбец в файле csv содержит следующие значения:

1,2,3.4,5,6.2

Проблема в том, что значения int заменяются на числа с плавающей запятой (я понимаю, чтоэто потому, что float будет более общим dtype), поэтому он читается как:

df
   value
0    1.0
1    2.0
2    3.4
3    5.0
4    6.2

Мне нужно получить все значения, как они есть в файле csv, в виде строк.

Я попытался использовать pd.read_csv('filename.csv',dtype=str) или pd.read_csv('filename.csv',dtype=object), и они приводят к изменению их на числа с плавающей точкой, а затем str:

  value
0  1.0
1  2.0
2  3.4
3  5.0
4  6.2

Есть ли способ прочитать их как есть? т.е.:

  value
0     1
1     2
2   3.4
3     5
4   6.2

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Использование

  • pd.read_csv() - Считать файл значений с разделителями-запятыми (csv) в DataFrame.
  • DataFrame.T - Транспонировать указатель и столбцы.
  • DataFrame.rename() - Изменить метки осей.

Пример.

import pandas as pd
from io import StringIO

# csv file contain single text row value 
csv1 = StringIO("""1,2,3.4,5,6.2""")
# csv1 replace with csv file name eg. 'filename.csv'
df = (pd.read_csv(csv1,dtype=str,header=None)).T.rename(columns={0:'value'})
print(df)
   value
0     1
1     2
2   3.4
3     5
4   6.2


# csv file contain multiple text row value 
csv2 = StringIO("""1
2
3.4
5
6.2""")
# csv2 replace with csv file name eg. 'filename.csv'
df1 = pd.read_csv(csv2,dtype=str,header=None,names=['value'])
print(df1)
  value
0     1
1     2
2   3.4
3     5
4   6.2
0 голосов
/ 10 октября 2019

Это мой тест CSV (untitled.csv):

a, 1

b, 2

c, 3.4

д, 5

е, 6,2

Со следующим кодом pd.read_csv('untitled.csv', dtype='str', header=None) получаю:

enter image description here

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