2016-09-01 20 views
5

Dokumenty zawierają dobre przykłady, how metadata can be provided. Jednak nadal nie jestem pewien, jeśli chodzi o wybór odpowiednich dtypów dla mojej ramki danych.Jak określić metadane dla dask.dataframe

  • Czy mogę zrobić coś takiego jak meta={'x': int 'y': float, 'z': float} zamiast meta={'x': 'i8', 'y': 'f8', 'z': 'f8'}?
  • Czy ktoś może wskazać mi listę możliwych wartości, takich jak "i8"? Jakie są typy dtypów?
  • Jak określić kolumnę zawierającą dowolne obiekty? Jak mogę określić kolumnę zawierającą tylko wystąpienia jednej klasy?

Odpowiedz

3

Dostępne podstawowe typy danych to te, które są oferowane przez numpy. Spójrz na listę documentation.

Niewłączone do tego zestawu są formaty datetime (np. datetime64), dla których dodatkowe informacje można znaleźć w dokumentacji pandas i numpy.

Meta-argument dla beczek z danymi cząstkowymi zwykle oczekuje pustej ramki danych pandy przechowującej definicje kolumn, indeksów i dtypów.

Jednym ze sposobów, aby zbudować taką DataFrame jest:

import pandas as pd 
import numpy as np 
meta = pd.DataFrame(columns=['a', 'b', 'c']) 
meta.a = meta.a.astype(np.int64) 
meta.b = meta.b.astype(np.datetime64) 

Jest to również sposób na dostarczenie dtype do konstruktora dataframe Pandy, jednak nie jestem pewien, w jaki sposób, aby zapewnić ich do poszczególnych kolumn każdy. Jak widać, możliwe jest podanie nie tylko "nazwy" dla typów danych, ale także rzeczywistego numty dtype.

Odnośnie ostatniego pytania, typem, którego szukasz, jest "obiekt". Na przykład:

import pandas as pd 

class Foo: 
    def __init__(self, foo): 
     self.bar = foo 

df = pd.DataFrame(data=[Foo(1), Foo(2)], columns=['a'], dtype='object') 
df.a 
# 0 <__main__.Foo object at 0x00000000058AC550> 
# 1 <__main__.Foo object at 0x00000000058AC358> 
Powiązane problemy