python - 使用 DatetimeIndex 选择数据的数据框
问题描述
我有一个数据框如下所示:
import numpy as np
import pandas as pd
data = {'datetime' : ['2009-07-24 02:00:00', '2009-07-24 03:00:00','2009-07-24 04:00:00'],
'value1' : ['a', np.nan ,'c'],
'value2' : ['d','e','f']}
df = pd.DataFrame(data)
df = df.set_index(pd.DatetimeIndex(df['datetime']))
missing = df.loc[:, df.columns != ('datetime')]
上面的数据只是一个样本。但是假设我在更大的数据中有很多缺失值。我想在“value1”列中选择所有缺失值的数据。
missing_index = df[df['value1'].isnull()].index
这段代码会让我得到所有缺失值的索引,但我想要它们的实际行,在这种情况下,是第二行。
所以,我试过了,
df[missing_index]
但我有一个错误说
KeyError:“DatetimeIndex(['2009-07-24 03:00:00'],dtype='datetime64[ns]',name='datetime',freq=None)不在索引中”
解决方案
该错误来自df[<something>]
用于获取列的事实。当您调用df[missing_index]
它时,它试图missing_index
在列中找到 (这也是一个索引)。
正如@panktijk 在他的评论中指出的那样,做你想做的最简单的方法是:
df[df['value1'].isnull()]
但是,如果由于某种原因(也许您想操纵它们)您想按照自己的方式首先获取索引,然后使用这些索引来拉取子数据框,您可以执行以下操作:
df.loc[missing_index]
推荐阅读
- python - 用海龟创建一个红绿灯循环,但所有的灯都只进入四个红绿灯中的一个
- adobe - Adobe Lightroom Catalog API 返回代码+JSON
- matlab - Matlab中的STFT(短时傅里叶变换)和DFT(或FFT)
- python - AttributeError:“WebDriver”对象没有属性“findElement”
- reactjs - React Redux 和 Input 的 onChange
- r - 采样 Kolmogorov 分布
- python - 如何使用 Telebot 转发/阅读来自另一个频道的消息?
- c# - 如何在 selenium C# 中使用 IWebDriver 检查页面上的复选框?
- java - 使用平方根运算的后缀评估
- python - 访问从另一个模块的功能导入的模块