簡體   English   中英

替換 dataframe 列的值

[英]replacing values of dataframe column

我有當前的 dataframe:

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"]為您提供 dataframe 的副本

df["A"][df["A"]>0]給你一個視圖。

副本未鏈接到 dataframe,因此更改它不會對原始文件做任何事情。

Go 到此鏈接以獲取更多信息:

https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

作為上述的替代方法,您可以使用np.where並執行以下操作:

import numpy as np
df['A'] = np.where(df['A'] >0 ,1,0) # 0's will be given 0 here.

這將基本上用 1 replace所有 +ve,而用 0 替換其他所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM