我有一个用例,我认为这很普遍,因此我认为自己的这个问题应该很容易为自己解答,但我找不到任何答案.考虑以下.
df = pandas.DataFrame({"id": numpy.random.choice(range(100), 5, replace=False),
"value": numpy.random.rand(5)})
df2 = pandas.DataFrame([df["id"], df["value"]*2]).T
基本上,我是根据旧DataFrame df的值创建一个DataFrame df2.现在,如果我们运行
print(df.dtypes, end="\n------\n")
print(df2.dtypes)
我们得到
id int64
value float64
dtype: object
------
id float64
value float64
dtype: object
您可以看到df2第一列的dtype是float64,而不是应有的int64,即使Series本身的dtype是int64.这种行为对我来说非常困惑,我无法相信这是故意的.如何从某些系列创建DataFrame并保留系列的dtype?在我看来,它应该像pandas.DataFrame([s1,s2],dtypes = [int,float])一样容易,但是由于某种原因您不能在pandas中做到这一点.