草庐IT

multiIndex

全部标签

python - 从 pandas MultiIndex 中选择列

我有带有MultiIndex列的DataFrame,如下所示:#sampledatacol=pd.MultiIndex.from_arrays([['one','one','one','two','two','two'],['a','b','c','a','b','c']])data=pd.DataFrame(np.random.randn(4,6),columns=col)data从第二级只选择特定列(例如['a','c'],不是范围)的正确、简单的方法是什么?目前我正在这样做:importitertoolstuples=[iforiinitertools.product(['one

python - Pandas:修改特定级别的 Multiindex

我有一个带有Multiindex的数据框,并且想修改Multiindex的一个特定级别。例如,第一级可能是字符串,我可能想从该索引级别删除空格:df.index.levels[1]=[x.replace('','')forxindf.index.levels[1]]但是,上面的代码导致错误:TypeError:'FrozenList'doesnotsupportmutableoperations.我知道我可以reset_index并修改列,然后重新创建Multiindex,但我想知道是否有更优雅的方法可以直接修改Multiindex的一个特定级别。 最佳答案

python - 带有 pandas groupby multiindex 的箱线图,用于来自 multiindex 的指定子级别

好的,所以我有一个数据框,其中包含时间序列数据,每列都有一个多行索引。这是数据的样例,它是csv格式的。加载数据在这里不是问题。我想要做的是能够创建一个箱线图,其中包含根据多索引特定行中的不同类别分组的数据。例如,如果我要按“SPECIES”分组,我将在时间序列中的特定时间为每个组提供“aq”、“gr”、“mix”、“sed”和一个框。我试过了:grouped=data['2013-08-17'].groupby(axis=1,level='SPECIES')grouped.boxplot()但它给了我组中每个点的箱线图(平线),而不是分组集。是否有捷径可寻?我没有任何分组问题,因为我

python - 合并单级 MultiIndex

有没有办法在不重置索引的情况下合并单个级别的MultiIndex?我有一个由ObjectID索引的时不变值的“静态”表,并且我有一个由ObjectID+Date索引的时变字段的“动态”表。我想将这些表连接在一起。目前,我能想到的最好的是:dynamic.reset_index().merge(static,left_on=['ObjectID'],right_index=True)但是,动态表非常大,我不想为了组合值而不得不乱用它的索引。 最佳答案 是的,从pandas0.14.0开始,现在可以使用.join将单索引DataFram

python - Pandas MultiIndex 中的重采样

我有一些分层数据,这些数据从底部变成时间序列数据,看起来像这样:df=pandas.DataFrame({'value_a':values_a,'value_b':values_b},index=[states,cities,dates])df.index.names=['State','City','Date']dfvalue_avalue_bStateCityDateGeorgiaAtlanta2012-01-010102012-01-021112012-01-032122012-01-04313Savanna2012-01-014142012-01-025152012-01-03

python - 从 MultiIndex 中的索引列获取唯一值

我知道我可以通过重置索引来获取DataFrame的唯一值,但是有没有办法避免这一步并直接获取唯一值?鉴于我有:CAB0one31one22two1我能做到:df=df.reset_index()uniq_b=df.B.unique()df=df.set_index(['A','B'])pandas有内置的方法吗? 最佳答案 一种方法是使用index.levels:In[11]:dfOut[11]:CAB0one31one22two1In[12]:df.index.levels[1]Out[12]:Index([one,two],dt

python - 如何在 pandas 中查询 MultiIndex 索引列的值

代码示例:In[171]:A=np.array([1.1,1.1,3.3,3.3,5.5,6.6])In[172]:B=np.array([111,222,222,333,333,777])In[173]:C=randint(10,99,6)In[174]:df=pd.DataFrame(zip(A,B,C),columns=['A','B','C'])In[175]:df.set_index(['A','B'],inplace=True)In[176]:dfOut[176]:CAB1.111120222313.322224333655.5333226.677774现在,我要检索A值: