获取给定列的第一行值 您所在的位置:网站首页 series取第一列 获取给定列的第一行值

获取给定列的第一行值

2023-03-22 23:00| 来源: 网络整理| 查看: 265

回答问题

这似乎是一个非常简单的问题......但我没有看到我期待的简单答案。

那么,如何在 Pandas 中获取给定列的第 n 行的值? (我对第一行特别感兴趣,但也会对更一般的做法感兴趣)。

例如,假设我想将Btime中的1.2值拉为变量。

这样做的正确方法是什么?

>>> df_test ATime X Y Z Btime C D E 0 1.2 2 15 2 1.2 12 25 12 1 1.4 3 12 1 1.3 13 22 11 2 1.5 1 10 6 1.4 11 20 16 3 1.6 2 9 10 1.7 12 29 12 4 1.9 1 1 9 1.9 11 21 19 5 2.0 0 0 0 2.0 8 10 11 6 2.4 0 0 0 2.4 10 12 15 Answers

要选择ith行,使用iloc:

In [31]: df_test.iloc[0] Out[31]: ATime 1.2 X 2.0 Y 15.0 Z 2.0 Btime 1.2 C 12.0 D 25.0 E 12.0 Name: 0, dtype: float64

要选择Btime列中的第 i 个值,您可以使用:

In [30]: df_test['Btime'].iloc[0] Out[30]: 1.2 df_test['Btime'].iloc[0](推荐)和df_test.iloc[0]['Btime']有区别:

DataFrame 将数据存储在基于列的块中(其中每个块都有一个 dtype)。如果您先按列选择,则可以返回 view(这比返回副本更快)并保留原始 dtype。相反,如果您先按行选择,并且如果 DataFrame 具有不同 dtype 的列,则 Pandas 将数据_复制_到新的对象 dtype 系列中。所以选择列比选择行要快一点。因此,虽然df_test.iloc[0]['Btime']有效,但df_test['Btime'].iloc[0]的效率要高一些。

在分配方面,两者之间存在很大差异。df_test['Btime'].iloc[0] = x会影响df_test,但df_test.iloc[0]['Btime']可能不会。有关原因的解释,请参见下文。因为索引顺序的细微差别会对行为产生很大影响,所以最好使用单个索引分配:

df.iloc[0, df.columns.get_loc('Btime')] = x df.iloc[0, df.columns.get_loc('Btime')] = x(推荐):

推荐的方式 为 DataFrame 分配新值是避免链式索引,而是使用由 andrew](https://stackoverflow.com/a/32103253/190597)显示的方法[,

df.loc[df.index[n], 'Btime'] = x

或者

df.iloc[n, df.columns.get_loc('Btime')] = x

后一种方法要快一些,因为df.loc必须将行和列标签转换为位置索引,因此如果您使用df.iloc代替,则需要的转换少一些。

祖兹 100033 * *

df['Btime'].iloc[0] = x有效,但不推荐:

虽然这可行,但它利用了 DataFrames_current_ 实现的方式。无法保证 Pandas 将来必须以这种方式工作。特别是,它利用了(当前)df['Btime']总是返回一个视图(不是副本)这一事实,因此df['Btime'].iloc[n] = x可用于在df的Btime列的第 n 个位置_分配_一个新值。

由于 Pandas 没有明确保证索引器何时返回视图和副本,因此使用链式索引的赋值通常总是引发SettingWithCopyWarning,即使在这种情况下赋值成功修改了df:

In [22]: df = pd.DataFrame({'foo':list('ABC')}, index=[0,2,1]) In [24]: df['bar'] = 100 In [25]: df['bar'].iloc[0] = 99 /home/unutbu/data/binky/bin/ipython:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self._setitem_with_indexer(indexer, value) In [26]: df Out[26]: foo bar 0 A 99


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有