2024-09-29 18:52:57 发布
网友
在行索引器中有一个Pandas Dataframe,其中MultiIndex如下所示:
Dataframe
MultiIndex
{btxer3>的一个{btxer3>级的索引器仍然是{btxer3>的一个索引器。在
这就是我想要达到的目的:
我需要做什么手术才能达到这个目的?另外,如果题目可以改进,请提出建议。在
由于某些条目有NaN值,因此在取消其中一个索引时,您可能需要考虑pivot table,以避免“重复条目”值错误。在
NaN
假设您有df数据帧,列'SlabLT',索引为date和{},请尝试:
df
'SlabLT'
date
df.reset_index().pivot_table(values = 'SlabLT', index = 'date', columns = 'SlabLT')
将^{}与选择列SlabLT一起使用:
SlabLT
print (df['SlabLT'].unstack())
但是如果MultiIndex中可能的重复是必需的聚合列,例如mean:
mean
样本:
df = pd.DataFrame({'date':['2017-10-01','2017-10-08','2017-10-08','2017-10-15', '2017-10-15'], 'SlabType':['UOM2','AMOUNT','UOM2','AMOUNT','AMOUNT'], 'SlabLT':[1,6000,1,6000,5000]}).set_index(['date','SlabType']) print (df) SlabLT date SlabType 2017-10-01 UOM2 1 2017-10-08 AMOUNT 6000 UOM2 1 2017-10-15 AMOUNT 6000 <-duplicated MultiIndex '2017-10-15', 'AMOUNT' AMOUNT 5000 <-duplicated MultiIndex '2017-10-15', 'AMOUNT' print (df['SlabLT'].unstack())
ValueError: Index contains duplicate entries, cannot reshape
print (df.groupby(level=[0,1])['SlabLT'].mean()) date SlabType 2017-10-01 UOM2 1 2017-10-08 AMOUNT 6000 UOM2 1 2017-10-15 AMOUNT 5500 Name: SlabLT, dtype: int64 print (df.groupby(level=[0,1])['SlabLT'].mean().unstack()) SlabType AMOUNT UOM2 date 2017-10-01 NaN 1.0 2017-10-08 6000.0 1.0 2017-10-15 5500.0 NaN
由于某些条目有
NaN
值,因此在取消其中一个索引时,您可能需要考虑pivot table,以避免“重复条目”值错误。在假设您有},请尝试:
df
数据帧,列'SlabLT'
,索引为date
和{df.reset_index().pivot_table(values = 'SlabLT', index = 'date', columns = 'SlabLT')
将^{} 与选择列
SlabLT
一起使用:但是如果
^{pr2}$MultiIndex
中可能的重复是必需的聚合列,例如mean
:样本:
相关问题 更多 >
编程相关推荐