亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

復制和替換 Pandas 單元格值

復制和替換 Pandas 單元格值

達令說 2023-06-06 16:17:53
是否可以在 Pandas 列中獲取給定值并將其更改為前一行值?例如,我有這個數據框:Date        Price   Signal2018-01-01  13380.00    12018-01-02  14675.11    02018-01-03  14919.51    02018-01-04  15059.54    02018-01-05  16960.39    02018-01-06  17069.79    -12018-01-07  16150.03    02018-01-08  14902.54    02018-01-09  14400.00    12018-01-10  14907.09    02018-01-11  13238.78    02018-01-12  13740.01    -12018-01-13  14210.00    0我想將信號列中的零替換為 1 或 -1。最終的DF應該是這樣的:Date        Price   Signal2018-01-01  13380.00    12018-01-02  14675.11    12018-01-03  14919.51    12018-01-04  15059.54    12018-01-05  16960.39    12018-01-06  17069.79    -12018-01-07  16150.03    -12018-01-08  14902.54    -12018-01-09  14400.00    12018-01-10  14907.09    12018-01-11  13238.78    12018-01-12  13740.01    -12018-01-13  14210.00    -1
查看完整描述

3 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

嘗試這個:

df['Signal'].replace(to_replace=0, method='ffill')

(假設你的 DataFrame 被稱為 df)


查看完整回答
反對 回復 2023-06-06
?
MM們

TA貢獻1886條經驗 獲得超2個贊

import?pandas?as?pd

準備數據框

如果你有一個數據框:

df?=?pd.DataFrame([1,0,1,0,1],?columns=['col1'])

http://img3.sycdn.imooc.com/647eebce00018d9600740162.jpg

使用純 apply()

你可以做:

def?replace(num):?
???if?num==1:?return?1
????if?num==0:?return?-1

然后將其應用于包含要替換的值的列:

df['new']=df['col1'].apply(replace)

apply() lambda 函數

您可以使用lambda 函數實現相同的目的:

df['col1'].apply(lambda?row:?1?if?row?==?1?else?-1)

使用內置方法

使用我們準備的數據框,可以做:

df['new']?=?df['col1'].replace(to_replace=0,?value=-1)

如果您不想創建新列,只需直接替換現有列中的值,就地進行即可:

df['col1'].replace(to_replace=0,?value=-1,inplace=True)

清理

如果創建了一個列并且不想保留列,可以將其刪除:

df.drop('col1',axis=1)


查看完整回答
反對 回復 2023-06-06
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

如果您想要將以前的值傳播到下一行,請使用以下命令:

df["Signal"] = df["Signal"].ffill()


查看完整回答
反對 回復 2023-06-06
  • 3 回答
  • 0 關注
  • 223 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號