【发布时间】:2020-01-24 20:35:27
【问题描述】:
我有一个多索引数据框,并希望将其中一个列的切片设置为等于系列,根据列切片和系列的索引匹配进行排序(排序)。列的最内层索引和系列的索引是相同的,除了它们的排序(排序)。 (见下面的例子)
我可以通过首先根据列的索引对系列的索引进行排序,然后使用 series.values(见下文)来做到这一点,但这感觉像是一种解决方法,我想知道是否可以直接将系列分配给列切片。
示例:
import pandas as pd
multi_index=pd.MultiIndex.from_product([['a','b'],['x','y']])
df=pd.DataFrame(0,multi_index,['p','q'])
s1=pd.Series([1,2],['y','x'])
df.loc['a','p']=s1[df.loc['a','p'].index].values
上面的代码给出了所需的输出,但我想知道最后一行是否可以更简单,例如:
df.loc['a','p']=s1
但这会将列切片设置为 NaN。
期望的输出:
p q
a x 2 0
y 1 0
b x 0 0
y 0 0
从 df.loc['a','p']=s1 获得输出:
p q
a x NaN 0
y NaN 0
b x 0.0 0
y 0.0 0
这对我来说似乎是一个简单的问题,但我无法在任何地方找到答案。
【问题讨论】:
标签: python pandas dataframe multi-index