慕后森
若要获取NumPy数组,应使用values属性:In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c']); df
A B
a 1 4b 2 5c 3 6In [2]: df.index.valuesOut[2]: array(['a', 'b', 'c'], dtype=object)这将访问数据的存储方式,因此不需要进行转换。注:这个属性也适用于许多其他熊猫的物体。In [3]: df['A'].valuesOut[3]: Out[16]: array([1, 2, 3])若要将索引作为列表获取,请调用tolist:In [4]: df.index.tolist()Out[4]: ['a', 'b']同样的,列也是。
临摹微笑
电流截至.v0.24.0+, 2019.不建议使用.values赞成这些方法!从v0.24.0开始,我们将有两种新的、更好的方法来获得NumPy数组Index, Series,和DataFrame对象:它们是to_numpy(),和.array..关于使用,文档提到:我们没有删除或反对Series.values或DataFrame.values,但是我们强烈推荐和使用.array或.to_numpy()相反。看见V0.24.0发行说明的这一部分想了解更多信息。to_numpy()方法df.index.to_numpy()# array(['a', 'b'], dtype=object)df['A'].to_numpy()# array([1, 4])默认情况下,将返回视图。任何修改将影响原件。v = df.index.to_numpy()v[0] = -1df
A B-1 1 2b 4 5如果您需要副本,请使用to_numpy(copy=True);v = df.index.to_numpy(copy=True)v[-1] = -123df
A B
a 1 2b 4 5请注意,此函数也适用于DataFrames(同时.array)。array属性此属性返回ExtensionArray对象,该对象支持索引/序列。pd.__version__# '0.24.0rc1'# Setup.df = pd.DataFrame([[1, 2], [4, 5]], columns=['A', 'B'], index=['a', 'b'])df
A B
a 1 2b 4 5df.index.array
# <PandasArray># ['a', 'b']# Length: 2, dtype: objectdf['A'].array# <PandasArray># [1, 4]# Length: 2, dtype: int64从这里,可以使用list:list(df.index.array)# ['a', 'b']list(df['A'].array)# [1, 4]或者直接打电话.tolist():df.index.tolist()# ['a', 'b']df['A'].tolist()# [1, 4]关于归还的内容,医生们提到,为Series和Index由普通NumPy数组支持的ES,Series.array将返回一个新的arrays.PandasArray,它是一个薄的(无副本)包装器。numpy.ndarray. arrays.PandasArray它本身并不特别有用,但它确实提供了与在熊猫或第三方库中定义的任何扩展数组相同的接口。总之,.array将返回现有ExtensionArray支持索引/系列,或如果有一个NumPy数组支持该系列,则将生成一个新的ExtensionArray对象是作为底层数组上的一个薄包装器创建的。添加两种新方法的理由这些职能是在两个GitHub问题下讨论的结果而增加的。GH 19954和GH 23623.具体来说,文档提到了理由:[.]带着.values还不清楚返回的值是实际数组,还是它的某些转换,还是熊猫自定义数组之一(如Categorical)。例如,用PeriodIndex, .values生成一个新的ndarray每次的句点对象。[.]这两个函数旨在提高API的一致性,这是朝着正确方向迈出的重要一步。最后,.values在当前版本中不会受到反对,但是我预计这种情况可能会在将来的某个时候发生,所以我会敦促用户尽快迁移到更新的API中。