我想在多索引的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转换为浮点数?
谢谢。
答案 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