如果我有一个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