python - 替换数据框列的值
问题描述
我有当前的数据框:
df = pd.DataFrame({"A":[1,2,-3,-4,5],
"B":[1,-2,3,-4,5]})
我想在列中将所有正值替换A
为
1,将所有负值替换为 0。
我试着这样做:
df[df["A"]>0]["A"] = 1
df[df["A"]<0]["A"] = 0
但这没有用(数据框根本没有改变)。
但是下面的代码确实有效:
df["A"][df["A"]>0] = 1
df["A"][df["A"]<0] = 0
谁能告诉我两者有什么区别?
为什么第一个不起作用,而第二个起作用?
谢谢!
解决方案
简而言之:
df[df["A"]>0]["A"]
为您提供数据框的副本
并df["A"][df["A"]>0]
让你看到它。
副本未链接到数据框,因此更改它不会对原始文件做任何事情。
转到此链接以获取更多信息:
https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
推荐阅读
- scala - Scala:返回列表中开始和结束之间的所有序列
- javascript - 为什么用户在刷新时被重定向到登录页面?
- python - 转码在线、实时、分块存储的视频
- laravel - 如何使用 laravel 从数据透视表中获取产品名称?
- java - 向 HTML“img src”选项添加高度或宽度时未加载图像
- ios - 保存状态 iOS - 离开应用程序时保存值 - Xamarin
- node.js - 尝试在 Electron 桌面应用程序中使用 oauth 流(使用 spotify API)?
- ruby-on-rails - 如何在 bootstrap 的 svg 图标上使用 link_to 函数
- r - 如何使用 Loops 或 Lapply 从矩阵中生成 100 个新变量?
- node.js - 如何从另一个创建 POST localhost 的应用程序中侦听或获取 React 应用程序中的 json?