python - 如何按索引对数据框列进行操作
问题描述
根据我在 StackOverflow 上收到的建议,我认为我在使用 Pandas 数据帧时已经解决了我的“CopyWithWarning”问题,但它们又回来咬我了。我正在尝试在数据框中创建一个新列,它是另一列的第一个区别:
df[upper_sys_hrt] = df[idx_upper] - df[idx_upper].shift(1)
df[upper_sys_hrt].iloc[0] = d[upper_sys_hrt].iloc[1]
这有时(并非总是)给我一个CopyWithWarning
错误。我尝试将其更改为
df[ : , df.get_loc(upper_sys_hrt)] = df[ : , df.columns.get_loc(idx_upper)] - df[: , df.columns.get_loc(idx_upper)].shift(1)
但我得到的只是一条错误消息:
TypeError: '(slice(1, None, None), 3)' is an invalid key
我已经尝试(狩猎和啄食)对语法以及谷歌搜索进行更改,但一无所获。我究竟做错了什么?
解决方案
你有列的位置,而不是标签。要获取标签,请重新索引df.columns
:
col = df.columns[df.get_loc(upper_sys_hrt)]
df[col] = df[col] - df[col].shift()
要不就
df[col] = df[col].diff()
如果您更喜欢使用索引,则可以使用iloc
:
idx = df.get_loc(upper_sys_hrt)
df.iloc[:,idx] = df.iloc[:,idx].diff()
推荐阅读
- arduino - 用两个按钮运行两个 LED
- kubernetes - Openshift Cloudburst 工作节点到公共云?
- python - 在 pex 文件中选择自定义 python 环境/版本
- datatable - dash_table.DataTable 的行和列中的 html.Button
- python - Django 使用来自子文件夹设置的 loaddata
- reactjs - npm start 错误:npm start require(...) 不是函数 npm ERR!代码生命周期
- c++ - 在多重继承中使用 std::unique_ptr
- javascript - 如何将范围数据传递给简单的 var 数组?
- entity-framework-core - InvalidOperationException with $top or $skip in OData Expand
- c# - csv文件表名可以与文件名不同吗?在c#中如何