我有一个多索引数据框,想要将其某一列的一个切片设置为等于一个序列,并根据列切片和系列的索引匹配进行排序(排序)。列的最内层索引和系列的索引相同,除了它们的排序(排序)。 (请参见下面的示例)
我可以通过首先根据列的索引对系列的索引进行排序,然后使用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
但这会将列切片设置为NaNs。
所需的输出:
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
对我来说,这似乎是一个简单的问题,但我无法在任何地方找到答案。
答案 0 :(得分:0)
您尝试过类似的方法吗?
df.loc['a']['p'] = s1
结果df在这里
p q
a x 2 0
y 1 0
b x 0 0
y 0 0