Python 数据帧索引过滤

Python 数据帧索引过滤,python,indexing,pandas,filter,Python,Indexing,Pandas,Filter,我有两个相同时间分辨率的数据帧。从第一个数据帧(在我的例子中为df_data1)开始,我只想得到所有值['A'],其中['B']小于90。现在我想过滤我的secound数据帧,这样我就只有第一个数据帧中具有相同时间戳(timeindex)的值 df_data1 = pd.io.parsers.read_csv(station_path, skiprows=0, index_col=0, na_values=[-999], names= names_header , sep=';', header

我有两个相同时间分辨率的数据帧。从第一个数据帧(在我的例子中为df_data1)开始,我只想得到所有值['A'],其中['B']小于90。现在我想过滤我的secound数据帧,这样我就只有第一个数据帧中具有相同时间戳(timeindex)的值

df_data1 = pd.io.parsers.read_csv(station_path, skiprows=0, index_col=0, na_values=[-999], names= names_header , sep=';', header=None , squeeze=True)

date     A  B
16.08.2013 03:00     -1  97
16.08.2013 03:15     -1  95
16.08.2013 03:30     0   92
16.08.2013 03:45     4  90
16.08.2013 04:00     18 88
16.08.2013 04:15     42 86
16.08.2013 04:30 73 83
16.08.2013 04:45     110    81
16.08.2013 05:00    151 78

现在我想要所有的df_数据['A'],其中df_数据['B']是好的,你的第一部分基本完成了:

df_data = df_data[(df_data['B']  < 90)]
编辑

不清楚为什么会出现
键错误
,但您也可以使用以下选项:

df_data2[df_data2.index.isin(df_data1.index)]
这将处理第二个df中不存在的任何索引值。

要完成此操作:

  • 在第一种方法中,我犯了一个错误
但使用以下表达式时,效果很好:


df_data2[df_data2.index.isin(df_data1.index)]

Thx回答!我得到了这个错误:文件“C:\WinPython-64bit-2.7.9.3\python-2.7.9.amd64\lib\site packages\pandas\core\index.py”,第1283行,在“has\u valid\u type(key,self.obj.\u get\u axis\u name(axis)))中,你是在逐字使用我的答案还是这样做:
df\u data2.loc[df\u data.index]
?df_数据1来自TimeSeries类型,df_数据2来自DataFrame类型这是一个问题吗?它应该仍然有效,您可以发布原始输入数据和代码来重现您的问题,另一种方法是
df_数据2[df_数据2.index.isin(df_数据1.index)]
df_data = df_data[(df_data['B']  < 90)]
In [40]:

df1.loc[df_data.index]
Out[40]:
                       w    x    y   z
date                                  
2013-08-16 04:00:00    0    0    0   0
2013-08-16 04:15:00    0    0    0   0
2013-08-16 04:30:00   47   47   48   0
2013-08-16 04:45:00   77   78   79  88
2013-08-16 05:00:00  111  112  125 NaN
df_data2[df_data2.index.isin(df_data1.index)]