如果我有一個pandas.DataFrame
與(例如int64
和float64
)不同類型的列,從與.loc
索引的int
柱得到一個單一的元件將輸出到float
:的.loc索引改變鍵入
import pandas as pd
df_test = pd.DataFrame({'ints':[1,2,3], 'floats': [4.5,5.5,6.5]})
df_test['ints'].dtype
>>> dtype('int64')
df_test.loc[0,'ints']
>>> 1.0
type(df_test.loc[0,'ints'])
>>> numpy.float64
如果我用.at
索引,它不會發生:
type(df_test.at[0,'ints'])
>>> numpy.int64
也當所有列int
不會發生:
df_test = pd.DataFrame({'ints':[1,2,3], 'ints2': [4,5,6]})
df_test.loc[0,'ints']
>>> 1
這是pandas
索引的一些核心屬性的後果嗎?換句話說,它是一個功能的錯誤嗎? :)
更新:原來,it is a bug它將被固定在pandas 0.20.0
。
我認爲這是與'loc'隱含試圖返回一行,即使你只有一個單一的價值做了GitHub的問題返回dtype被升級到可以表示這些行值的dtype – EdChum
@EdChum,IMO這是一個正確的答案。你爲什麼不把它作爲一個小演示答案? – MaxU
@MaxU當然會發帖 – EdChum