复制和替换 Pandas 单元格值

是否可以在 Pandas 列中获取给定值并将其更改为前一行值?


例如,我有这个数据框:



Date        Price   Signal

2018-01-01  13380.00    1

2018-01-02  14675.11    0

2018-01-03  14919.51    0

2018-01-04  15059.54    0

2018-01-05  16960.39    0

2018-01-06  17069.79    -1

2018-01-07  16150.03    0

2018-01-08  14902.54    0

2018-01-09  14400.00    1

2018-01-10  14907.09    0

2018-01-11  13238.78    0

2018-01-12  13740.01    -1

2018-01-13  14210.00    0

我想将信号列中的零替换为 1 或 -1。最终的DF应该是这样的:



Date        Price   Signal

2018-01-01  13380.00    1

2018-01-02  14675.11    1

2018-01-03  14919.51    1

2018-01-04  15059.54    1

2018-01-05  16960.39    1

2018-01-06  17069.79    -1

2018-01-07  16150.03    -1

2018-01-08  14902.54    -1

2018-01-09  14400.00    1

2018-01-10  14907.09    1

2018-01-11  13238.78    1

2018-01-12  13740.01    -1

2018-01-13  14210.00    -1


达令说
浏览 378回答 3
3回答

慕的地8271018

尝试这个:df['Signal'].replace(to_replace=0, method='ffill')(假设你的 DataFrame 被称为 df)

MM们

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)

白板的微信

如果您想要将以前的值传播到下一行,请使用以下命令:df["Signal"] = df["Signal"].ffill()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python