是否可以在 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
提交
取消