How do I get a pandas DataFrame column or index as an array?
您知道如何将数据帧的索引或列作为numpy数组或python列表获取吗?
要获得numpy数组,应使用
1 2 3 4 5 6 7 8 | In [1]: df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['a', 'b', 'c']); df A B a 1 4 b 2 5 c 3 6 In [2]: df.index.values Out[2]: array(['a', 'b', 'c'], dtype=object) |
这将访问数据的存储方式,因此不需要进行转换。注意:此属性也适用于许多其他熊猫的对象。
1 2 | In [3]: df['A'].values Out[3]: Out[16]: array([1, 2, 3]) |
要获取索引列表,请调用
1 2 | In [4]: df.index.tolist() Out[4]: ['a', 'b'] |
同样,对于柱。
可以使用
如果您处理的是多索引数据帧,那么您可能只对提取多索引的一个名称的列感兴趣。你可以这样做
1 | df.index.get_level_values('name_sub_index') |
当然,
电流从v0.24.0+,2019年开始。
反对你使用从v0.24.0开始,我们将有两种全新的、首选的方法从
We haven’t removed or deprecated
Series.values or
DataFrame.values , but we highly recommend and using.array or
.to_numpy() instead.
有关更多信息,请参阅v0.24.0发行说明的本节。
1 2 3 4 5 | df.index.to_numpy() # array(['a', 'b'], dtype=object) df['A'].to_numpy() # array([1, 4]) |
默认情况下,返回视图。任何修改都将影响原始文件。
1 2 3 4 5 6 7 | v = df.index.to_numpy() v[0] = -1 df A B -1 1 2 b 4 5 |
如果您需要副本,请使用
1 2 3 4 5 6 7 | v = df.index.to_numpy(copy=True) v[-1] = -123 df A B a 1 2 b 4 5 |
请注意,此函数也适用于数据帧(而
1 2 3 4 5 6 7 8 9 10 | pd.__version__ # '0.24.0rc1' # Setup. df = pd.DataFrame([[1, 2], [4, 5]], columns=['A', 'B'], index=['a', 'b']) df A B a 1 2 b 4 5 |
1 2 3 4 5 6 7 8 9 | df.index.array # <PandasArray> # ['a', 'b'] # Length: 2, dtype: object df['A'].array # <PandasArray> # [1, 4] # Length: 2, dtype: int64 |
从这里可以得到一个使用
1 2 3 4 5 | list(df.index.array) # ['a', 'b'] list(df['A'].array) # [1, 4] |
或者直接打电话给
1 2 3 4 5 | df.index.tolist() # ['a', 'b'] df['A'].tolist() # [1, 4] |
关于返回的内容,文件提到,
For
Series andIndex es backed by normal NumPy arrays,Series.array
will return a newarrays.PandasArray , which is a thin (no-copy)
wrapper around anumpy.ndarray .arrays.PandasArray isn’t especially
useful on its own, but it does provide the same interface as any
extension array defined in pandas or by a third-party library.
综上所述,
添加两种新方法的理由这些职能是根据两个Github问题GH19954和GH23623进行讨论后增加的。
具体来说,文件提到了理由:
[...] with
.values it was unclear whether the returned value would be the
actual array, some transformation of it, or one of pandas custom
arrays (likeCategorical ). For example, withPeriodIndex ,.values
generates a newndarray of period objects each time. [...]
这两个函数旨在提高API的一致性,这是朝着正确方向迈出的重要一步。
最后,在当前版本中,
由于pandas v0.13,您也可以使用
1 | df.index.get_values() |
我把大熊猫
1 2 | dd = list(zone[0]) #Where zone[0] is some specific column of the table idx = dd.index(filename[i]) |
您的索引值为