简体   繁体   English

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

[英]Pandas: setting value in a multi-indexed dataframe

I would like to set a value in a multi-indexed DataFrame.我想在多索引 DataFrame 中设置一个值。 Here is an example:下面是一个例子:

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

gives:给出:

        z
x   y   
1   a   1
    b   2
2   a   3

and then进而

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

gives

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

instead of代替

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

So apparently, Pandas does not understand that the dataframe is multi-indexed and it interprets [(2,'b')] as row 2 and column 'b', as if I had written df.loc[2,'b'] .显然,Pandas 不明白数据框是多索引的,它将[(2,'b')]为第 2 行和列 'b',就好像我写了df.loc[2,'b'] .

How can I achieve what I want ?我怎样才能实现我想要的?

Additionally, why is the integer 4 converted into a float ?另外,为什么整数 4 转换为浮点数?

Thanks.谢谢。

Also is necessary specify column z :还需要指定列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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM