【发布时间】:2021-12-27 23:05:18
【问题描述】:
我有一个多行 4 列的数据框。每列包含一个包含 100 个值的数组。
我这样做的直观方式与使用多维 numpy 数组的方式相同。
例如,我想要column1 中每个数组的第一个元素。所以我说
df["column1"][:][0]
对我来说这是有道理的:首先选择列,然后获取每个数组,然后获取每个数组的第一个元素。
但是,它根本不起作用。相反,它只是从column1 第 1 行吐出整个数组。
但是 - 这是最令人沮丧的事情 - 如果我说:
df["column1"][1][0]
根据我的预期逻辑,它完全符合我的预期,例如,我在column1 的第二行中获得了数组中的第一个元素。
如何获取column1 中每个数组中的每个第 n 个元素?
【问题讨论】:
-
如果它是一列列表(或元组),您可以
df["column1"].str[0]选择每个列表的第一个元素。但真的您可能需要考虑将数据存储在更扁平的二维数组中 -
你的第一个选择不起作用的原因是因为
df["column1"]选择了整个系列,然后[:]仍然选择了整个系列,所以它什么也没做,那么 Series[] 是基于标签的选择。所以整个切片所做的就是选择 Series,选择所有行,然后选择标记为 0 的行。 -
并与您的第二个选择
df["column1"][1][0]进行比较,您选择整个系列,然后选择标记为1的行,此时,给定一个非重复索引,您将存储的值在该单元格中,这是一个列表,因此您的最终选择会返回该列表的第 0 个元素。
标签: python arrays pandas dataframe pd