【问题标题】:pandas dataframe slicing - pythonic idiom for order of row v column?熊猫数据框切片 - 用于行 v 列顺序的 Pythonic 习语?
【发布时间】:2019-11-26 21:48:05
【问题描述】:

我正在参加 DataCamp“熊猫基础”课程。这是time series with pandas 中关于部分字符串索引的部分。

给定一个这种格式的DataFrame

                     Temperature  DewPoint  Pressure
Date                                                
2010-01-01 00:00:00         46.2      37.5       1.0
2010-01-01 01:00:00         44.6      37.1       1.0
2010-01-01 02:00:00         44.1      36.9       1.0
2010-01-01 03:00:00         43.8      36.9       1.0
2010-01-01 04:00:00         43.5      36.8       1.0
2010-01-01 05:00:00         43.3      37.3       1.0
...
2010-01-01 21:00:00         48.1      38.5       1.0
2010-01-01 22:00:00         47.2      38.5       1.0
2010-01-01 23:00:00         46.4      38.4       1.0
2010-01-02 00:00:00         46.5      38.2       1.0
2010-01-02 01:00:00         44.9      37.8       1.0
...                          ...       ...       ...
2010-12-31 22:00:00         46.9      37.9       1.0
2010-12-31 23:00:00         46.2      37.7       1.0

在之前的练习中,他们使用以下公式仅提取一些行,使用部分字符串索引:

df1 = df.loc['2010-Aug-01':'2010-Aug-15', 'Temperature']

但是,在当前的练习中,他们使用了另一个有效的公式

df2 = df['Temperature']['2010-Aug-01':'2010-Aug-15']

我喜欢这个,因为它很简单。但是,标签的位置似乎违反直觉,因此出于实验目的,我尝试了:

df3 = df['2010-Aug-01':'2010-Aug-15']['Temperature']

这似乎是等效的(它给出了相同的结果)。

我认为熊猫“足够聪明”可以做正确的事,但我很惊讶。我在考虑字典格式,并假设索引(键)应该排在第一位,值(列)选择第二位。

有推荐的顺序吗?

[column][index]

[index][column]

是为了编写代码,还是因为 pandas 可以理解,所以我如何编写代码无关紧要,所以有人会阅读代码吗?

注意:这里的问题不是“如何在 pandas 中提取带有部分字符串索引的行?”。请不要告诉我.loc 是您个人的最爱,或者您曾经使用过的唯一方式,或者您认为“有效”的唯一方式。如果您只知道.loc,那么除非您竭尽全力考虑其他可能性,否则您将无法回答这个问题。我知道.loc.loc不是这个问题的答案。 (我希望我不必这么说。)

【问题讨论】:

    标签: python pandas dataframe datetime slice


    【解决方案1】:

    你应该使用.loc

    d1 = df.loc['2010-08-01':'2010-08-15','Temperature']
    

    【讨论】:

    • 是的,我(也)已经这样做了。这不是这里的问题。
    • 不推荐您建议的任何方式。 @WeNYoBen 为您提供了他们可以推荐的方式。
    • @VickiB 我推荐使用 .loc ,因为你将这些切片传递给 pandas ,那么为什么不使用 pandas 的函数,比如 loc iloc 呢?
    • 再一次,他的问题不是要求超出您在此处看到的建议。既然这似乎没有人能理解,我将编辑问题以使其更清楚。
    • @VickiB 我只会说使用 .loc 而不是链接 [],因为这会导致一些不为人知的错误
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2015-08-27
    • 2015-08-11
    • 1970-01-01
    相关资源
    最近更新 更多