我几天前才开始使用pandas,我也不是Python的习惯用户。我发现下面所示示例中loc
的以下行为令人困惑:
import pandas as pd
dates = pd.date_range('2015-01-01', '2015-01-07')
df = pd.DataFrame({'Sunnyland':[34, 36, 32, 37, 34, 36, 38], 'Freezeville':[4, 5, 6, 5, 5, 3, 2]}, index=dates)
创建日期框:
[请原谅列名的格式问题,它们应该与表列对齐]:
Freezeville Sunnyland 2015-01-01 4 34 2015-01-02 5 36 2015-01-03 6 32 2015-01-04 5 37 2015-01-05 5 34 2015-01-06 3 36 2015-01-07 2 38
现在让我们使用loc
来选择行:
df.loc['2015-01-02'] # select single row
这就像预期的那样工作,输出一个Series
对象:
Freezeville 5 Sunnyland 36 Name: 2015-01-02 00:00:00, dtype: int64
下面的工作也很好
df.loc['2015-01-02':'2015-01-06'] # select range of rows:
输出:
Freezeville Sunnyland 2015-01-02 5 36 2015-01-03 6 32 2015-01-04 5 37 2015-01-05 5 34 2015-01-06 3 36
问题在于以下语句:
df.loc[['2015-01-02', '2015-01-06']] # comma-separated list of rows
产生
Freezeville Sunnyland 2015-01-02 NaN NaN 2015-01-06 NaN NaN
我本以为这里发生了某种类型的推理问题——但在这种情况下,我期望的是KeyError
或什么,而不是看到的结果。你知道吗
那么解释是什么,我怎样才能按日期选择多个(任意)行呢?你知道吗
我不知道怎么解释,也许目前的实现很难推广到列表索引。如果使用实际的时间戳而不是字符串,它将起作用:
我认为您需要通过^{} 将字符串转换为} ,因为您需要匹配索引:
datetime
,然后得到^{相关问题 更多 >
编程相关推荐