python - Pandas:在多索引数据框中设置值
问题描述
我想在多索引 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 转换为 float ?
谢谢。
解决方案
还需要指定列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
推荐阅读
- reactjs - 教程中途停止时 React-Joyride 的“目标不可见”消息
- ios - 带有 Swift UI 的圆形进度条
- python - PyQt5:无法重新加载以前使用的 QWidget?
- r - 如何在 r 中使用 dplyr 循环计算多个实例的距离
- c++ - 如何让 Google 测试正常运行。测试总是失败。(它不会编译)
- php - 自定义 yii2 日期时间选择器
- python - Python 将 Excel 文件 (.xlsx) 转换为 PDF (.pdf)
- java - Selenium Table 和 div 重叠
- java - mybatis 中的 GenericTypeHandler 没有获取正确的类型对象
- python - Python - pandas 中的错误(在循环处理文件期间)