python - 更新多索引数据框中的值
问题描述
有人可以向我解释这种行为吗?这是我的数据框:
df = pd.DataFrame(
{
'key1' : ['f1', 'f1', 'f2', 'f2', 'f3'],
'key2' : ['fm1', 'fm2', 'fm1', 'fm2', 'fm1'],
'k' : np.random.rand(5),
'c' : [100, 200, 100, 150, 400],
})
df.set_index(["key1","key2"],inplace=True)
当我尝试更改值时:
df.loc["f1","fm1"].loc["k"]=-999
什么都没发生。并且df.loc["f1","fm1"].loc["k"]
仍然给出旧值我想知道我做错了什么,我应该如何实现这一点?
解决方案
使用一个元组并且只有一个loc
:
>>> df.loc[("f1", "fm1"), "k"] = -999
>>> df
k c
key1 key2
f1 fm1 -999.000000 100
fm2 0.082072 200
f2 fm1 0.119572 100
fm2 0.752586 150
f3 fm1 0.947604 400
>>>
您的代码不起作用的原因是因为df.loc["f1", "fm1"]
对与原始对象没有干扰的对象的引用df
,它返回一个全新的数据帧并替换该k
值,但它也不会替换它df
。
在 pandas 文档中阅读更多关于它的信息。
推荐阅读
- delphi - 使用 TIdTCPClient 设置 memcashed 值后的 Delphi 慢 readln()
- android - 使用颤动中的手势检测器导航到不同页面时颤动中的黑屏。说多个英雄共享同一个标签
- r - 将 Autoarima 汇总结果放入数据框 R
- java - 来自字符串解析错误的java LocalDateTime
- c# - 列表删除和除外行为不同
- pandas - 合并 2 个 pandas 表并使用它们
- android - 如何在线性布局中对齐按钮(viewpager 点指示器)
- c - C:在同时运行的 2 个不同程序之间共享结构的实例化
- c# - C# 从表达式中获取值
- python - 如何使用 colab 中的数据集 API 在 tensorflow 中加载本地 csv 文件