使用MultiIndex列创建DataFrame时,似乎无法使用df[df["AA"]>0.0]
等语法选择/过滤行。
例如:
import pandas as pd
import numpy as np
dates = np.asarray(pd.date_range('1/1/2000', periods=8))
_metaInfo = pd.MultiIndex.from_tuples([('AA', '[m]'), ('BB', '[m]'), ('CC', '[s]'), ('DD', '[s]')], names=['parameter','unit'])
df = pd.DataFrame(randn(8, 4), index=dates, columns=_metaInfo)
print df[df['AA']>0.0]
df [“AA”]> 0.0的结果是索引的DataFrame iso a Timeseries。这可能会导致崩溃。
当使用相同的metaInfo作为行的索引时,情况就不同了:
df1 = pandas.DataFrame(np.random.randn(4, 6), index=_metaInfo)
print df1[df1["AA"]>0.0]
产生
[ 1.13268106 -0.06887761 0.68535054 2.49431163 -0.29349413 0.34772553]
这是AA行大于零的元素。这仅提供行AA的值,而不提供DataFrame的其他列的值。
有解决方法吗?我想做一些我不该做的事吗?
答案 0 :(得分:3)
您只能选择“AA”列并将其用作整个df的过滤器。
像:
df[df[('AA','[m]')]>0.0]
parameter AA BB CC DD
unit [m] [m] [s] [s]
2000-01-01 0.600748 -1.163793 -0.982248 -0.397988
2000-01-03 1.045428 0.365353 0.049152 1.902942
2000-01-06 0.891202 0.021921 1.215515 -1.624741
2000-01-08 0.999217 -1.110213 0.257718 -0.096018