是否可以在 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)

MM們
TA貢獻1886條經驗 獲得超2個贊
import?pandas?as?pd
準備數據框
如果你有一個數據框:
df?=?pd.DataFrame([1,0,1,0,1],?columns=['col1'])
使用純 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)
添加回答
舉報
0/150
提交
取消