索引层次列

2024-09-26 18:07:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个分层列的数据框架,我正在尝试找出如何索引。当列索引有4个级别时,如何采用dataframe基本索引df.loc[row_indexer,column_indexer]?我正在寻找一些策略,比如df.loc['2014-01-02', DK='18757']。。。如何访问那里的数据?如何访问给定列级别下的列名--返回'App\u Field'names where'DeviceType'='Meter',或返回'Fields'where'DK'='20653'?你知道吗

>>> df
DeviceType            Meter         Inverter                   \
DK                    18757            20178            20179   
Field            Generation     Inverter_Gen     Inverter_Gen   
App_Field  generation_cumul generation_cumul generation_cumul   
2014-01-01              NaN              NaN              NaN   
2014-01-02              NaN              NaN              NaN   
2014-01-03              NaN              NaN              NaN   
2014-01-04              NaN              NaN              NaN   
2014-01-05              NaN              NaN              NaN   
2014-01-06              NaN              NaN              NaN   
2014-01-07              NaN              NaN              NaN   
2014-01-08              NaN              NaN              NaN   
2014-01-09              NaN              NaN              NaN   
2014-01-10              NaN              NaN              NaN   

DeviceType                         Weather                       
DK                    20180          20653                       
Field          Inverter_Gen     Irradiance             CellTemp  
App_Field  generation_cumul irradiance_avg cell_temperature_avg  
2014-01-01              NaN            NaN                  NaN  
2014-01-02              NaN            NaN                  NaN  
2014-01-03              NaN            NaN                  NaN  
2014-01-04              NaN            NaN                  NaN  
2014-01-05              NaN            NaN                  NaN  
2014-01-06              NaN            NaN                  NaN  
2014-01-07              NaN            NaN                  NaN  
2014-01-08              NaN            NaN                  NaN  
2014-01-09              NaN            NaN                  NaN  
2014-01-10              NaN            NaN                  NaN  

[10 rows x 6 columns]

Tags: 数据appfielddfnan级别whereloc
1条回答
网友
1楼 · 发布于 2024-09-26 18:07:56

将每一级列转换为一个系列,然后可以使用布尔掩码来选择所需的内容。你知道吗

a = list("EEEETTTT")
b = list("11223344")
c = list("XYXYXYXY")
mi = pd.MultiIndex.from_tuples(zip(a,b,c), names=["A","B","C"])
df = pd.DataFrame(np.random.randint(0, 10, (5, 8)), columns=mi)

A, B, C = [pd.Series(mi.get_level_values(name)) for name in mi.names]
mask = (A=="T") & (B.isin(["2","3"]))
df.iloc[:, mask.values]

相关问题 更多 >

    热门问题