使用预定义的数据类型初始化pandas DataFrame

12

pd.DataFrame的文档字符串针对整个数据帧指定了一个标量参数:

dtype:dtype,默认为None 要强制的数据类型,否则推断

看起来确实是要求标量,因为以下内容会导致错误:

dfbinseq = pd.DataFrame([],
                        columns = ["chr", "centre", "seq_binary"],
                        dtype = ["O", pd.np.int64, "O"])

dfbinseq = pd.DataFrame([],
                        columns = ["chr", "centre", "seq_binary"],
                        dtype = [pd.np.object, pd.np.int64, pd.np.object])

我需要创建一个空的数据框架(我需要将其放入HDF5存储器中以进行进一步的append),唯一的解决方法是:

dfbinseq.centre.dtype = np.int64

有没有一种方法可以同时设置 dtypes 参数?

1个回答

24
您可以将dtype设置为Series
import pandas as pd

df = pd.DataFrame({'A':pd.Series([], dtype='str'),
                   'B':pd.Series([], dtype='int'),
                   'C':pd.Series([], dtype='float')})

print (df)
Empty DataFrame
Columns: [A, B, C]
Index: []

print (df.dtypes)
A     object
B      int32
C    float64
dtype: object

带有数据:

df = pd.DataFrame({'A':pd.Series([1,2,3], dtype='str'),
                   'B':pd.Series([4,5,6], dtype='int'),
                   'C':pd.Series([7,8,9], dtype='float')})

print (df)
   A  B    C
0  1  4  7.0
1  2  5  8.0
2  3  6  9.0

print (df.dtypes)
A     object
B      int32
C    float64
dtype: object

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接