我有一個我認爲會很常見的用例,所以我認爲我的這個問題應該很容易回答自己,但我無法在任何地方找到答案。考慮以下。Python熊貓。使用Series創建DataFrame不會保留dtype
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
,df2
的基礎上,一箇舊DataFrame
,df
值。現在,如果我們運行
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
。這種行爲對我來說非常困難,我不能相信這是故意的。如何從Series
s創建DataFrame
並保留Series
s的dtype
s?在我看來,它應該像pandas.DataFrame([s1, s2], dtypes=[int, float])
一樣簡單,但由於某種原因,您不能在pandas
中那樣做。