首页 > 解决方案 > 替换数据框列的值

问题描述

我有当前的数据框:

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

谁能告诉我两者有什么区别?
为什么第一个不起作用,而第二个起作用?

谢谢!

标签: pythonpandas

解决方案


简而言之:

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


推荐阅读