2016-03-13 3 views
1

У меня есть файл данных, и когда я запускаю на нем df.dtypes, он говорит, что тип является объектом, но для его построения он должен быть integer, float, double и т. Д. Данные фактически состоят из трех столбцов чисел , как это:Как преобразовать dtype из объекта в int в Pandon pandas?

123 12345 0.9484 
123 12345 0.8746 
123 12345 0.4838 
123 12345 0.4837 

Как я могу идти о преобразовании данных, так что она может быть построена с пандами?

+0

check '.astype()' method/function – MaxU

+0

Когда я пытаюсь преобразовать данные в float, он дает мне сообщение об ошибке «Невозможно преобразовать строку в float:« 1703 73048 0.199 ». – aquaelmo

+0

Вы могли бы опубликовать вывод 'print (df.columns.tolist())'? Должно быть что-то не так с вашими данными ... Как вы читаете/генерируете свой фрейм данных? – MaxU

ответ

0

преобразование Datatype в pandas.read_csv

Этот ответ предполагает, что вы имеете matplotlib библиотеку, вычисляются в iPython и что ваш файл csv -ish.

%matplotlib inline 
import pandas as pd 
from cStringIO import StringIO 

fake_csv = '''123 12345 0.9484 
123 12345 0.8746 
123 12345 0.4838 
123 12345 0.4837''' 

# Create data frame, fake csv for example only 
# normally you would use pd.read_csv('/path/to/file.csv', ...) 
df = pd.read_csv(StringIO(fake_csv), sep='\s+', header=None) 

print 'DataFrame:\n{}\n\nData Types:\n{}'.format(df, df.dtypes) 

df.plot() 

DataFrame: 
    0  1  2 
0 123 12345 0.9484 
1 123 12345 0.8746 
2 123 12345 0.4838 
3 123 12345 0.4837 

Data Types: 
0  int64 
1  int64 
2 float64 
dtype: object 

df plot

Примечание: последний dtype:object является типом данных Series в df.dtypes не типов в df.

0

Я думаю, что вы можете использовать read_csv с параметрами: sep='\s+' (произвольное пробельных) и engine='python' (из-за предупреждения):

import pandas as pd 
import io 

temp=u"""Day Time Usage 
123 12345 0.9484 
123 12345 0.8746 
123 12345 0.4838 
123 12345 0.4837""" 
#after testing replace io.StringIO(temp) to filename 
df = pd.read_csv(io.StringIO(temp), sep='\s+', engine='python') 

print df 
    Day Time Usage 
0 123 12345 0.9484 
1 123 12345 0.8746 
2 123 12345 0.4838 
3 123 12345 0.4837 

print df.dtypes 
Day  int64 
Time  int64 
Usage float64 
dtype: object 

print df.index 
Int64Index([0, 1, 2, 3], dtype='int64') 
Смежные вопросы