熊猫:在多索引数据框中设置值

时间:2020-01-05 16:07:41

标签: python pandas dataframe

我想在多索引的DataFrame中设置一个值。这是一个示例:

import pandas as pd
df = pd.DataFrame([[1, 'a' , 1], [1, 'b', 2], [2, 'a', 3]], columns=['x', 'y', 'z'])
df.set_index(['x','y'], inplace=True)
df

给予:

        z
x   y   
1   a   1
    b   2
2   a   3

然后

df.loc[(2,'b')] = 4
df

给予

        z     b
x   y       
1   a   1   NaN
    b   2   NaN
2   a   3   4.0

代替

        z
x   y       
1   a   1
    b   2
2   a   3
    b   4

因此,显然,Pandas无法理解该数据帧是多索引的,并且它将[(2,'b')]解释为第2行和列“ b”,就像我写过df.loc[2,'b']一样。

我如何实现我想要的?

此外,为什么整数4转换为浮点数?

谢谢。

1 个答案:

答案 0 :(得分:0)

还必须指定列z

df.loc[(2,'b'), 'z'] = 4
print (df)
       z
x y     
1 a  1.0
  b  2.0
2 a  3.0
  b  4.0