2014-10-26 2 views
0

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

Я открыл файл .txt, который имеет 236 столбцов с Пандами.

Например, у меня есть столбец со значениями под названием «System Time», еще один называется «температура», еще один называется «Alarm», ...

Для «System Time» Я хочу использовать DateTime, для «Температура» я хочу использовать float, потому что значения имеют десятичные числа (например, 24.4), а для «Тревоги» я хочу использовать string.

Может ли кто-нибудь мне помочь?

ответ

0

Когда Pandas считывает ваш файл (например, с использованием pd.read_csv) для построения DataFrame, он автоматически выбирает соответствующий тип данных (dtype) для хранения данных по столбцам по столбцам. Это означает, что столбец десятичных чисел будет иметь тип float64 и т. Д.

Если у вас целых 236 столбцов, то, вероятно, проще всего позволить Pandas определить лучшие типы данных.

Даты могут быть более сложными для обработки, поэтому вам может потребоваться более четко указать, какие столбцы Pandas должны анализировать для типа datetime. Вы можете сделать это после того, как вы построили DataFrame с помощью pd.to_datetime(df["System Time"]).


Если же вы хотите, чтобы контролировать тип данных каждого столбца во время строительства, многие методы панды позволяют передать список или словарь имен столбцов и каковы их типы должны быть.

Например, если вы используете pd.read_csv, вы можете использовать аргумент dtype ключевого слова:

dtype: имя Тип или Dict колонки -> Тип

тип данных для данных или колонны. Например. {'a': np.float64, 'b': np.int32}

Например, вы можете выбрать, чтобы построить вам DataFrame способом, подобным этому:

df = pd.read_csv('file.txt', names=["Temperature", "Alarm"], 
        dtypes=[np.float64, object]) 

нотабене В Pandas нет типа string; такие значения обычно имеют тип данных object.

0

Вы можете преобразовать все элементы колонки, используя astype(<Type>).

Давайте рассмотрим этот быстрый пример, чтобы объяснить, как это сделать.

import pandas as pd 
x = [['0.3', '13', '14','03/22/2015'], ['1', '89', '3','24/02/2014'], ['4', '23', '0','04/13/2013']] 
df = pd.DataFrame(x, columns=['A', 'B', 'C','D']) 

print df.dtypes 

Выход: Тип каждого столбца "Объект"

A object 
B object 
C object 
D object 
dtype: object 

Используя astype(<Type>), мы можем преобразовать тип.

df['A'] = df['A'].astype(float) # To Float 
df['B'] = df['B'].astype(str)  # To Str 
df['C'] = df['C'].astype(int)  # To Int 
df['D'] = pd.to_datetime(df['D']) # To DateTime 

print df.dtypes 

Результат:

A   float64 
B   object 
C    int64 
D datetime64[ns] 
dtype: object 

Вы также можете назначить тип после прочтения CSV-файла, с помощью dtype и:

`df= pd.read_csv("data.csv", dtype={'A':float})` 
Смежные вопросы