文档提供了很好的示例,如何提供元数据。然而,在选择适合我的数据帧的正确数据类型时,我仍感到不确定。
- 我是否可以像这样做
meta={'x': int 'y': float, 'z': float}
,而不是meta={'x': 'i8','y': 'f8','z': 'f8'}
? - 是否有人可以为我提示一份可能值的列表,例如'i8'?有哪些数据类型存在?
- 如何指定包含任意对象的列?如何指定只包含一个类实例的列?
datetime64
),有关其附加信息可以在pandas和numpy文档中找到。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)
同时在pandas数据框的构造函数中提供dtype的方法,但是我不确定如何为每个列提供它们。可以看到,不仅可以提供数据类型的“名称”,还可以提供实际的numpy dtype。
关于你最后一个问题,你所寻找的数据类型是“object”。例如:
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>
Dask.dataframe和Pandas都使用NumPy数据类型。特别是,您可以将任何东西传递给np.dtype。这包括以下内容:
np.float64
float
'f8'
以下是从NumPy文档中获取的更详细的列表:http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html#specifying-and-constructing-data-types
dask.read_csv
中的数据转换为富对象,效果很好。数据类型最终变成了对象。不过我觉得这些富对象也可以在 meta 中使用。但我不确定是否需要。似乎 meta 可以直接是 object
… - CMCDragonkai