【问题标题】:Create a new columns in dataframe equaling differenciated series在数据框中创建一个新列,等于不同的系列
【发布时间】:2022-11-30 07:29:48
【问题描述】:

我想创建一个新专栏diff,以区分另一个专栏中的系列。

以下是我的数据框:

df=pd.DataFrame({
    'series_1' : [10.1, 15.3, 16, 12, 14.5, 11.8, 2.3, 7.7,5,10],
    'series_2' : [9.6,10.4, 11.2, 3.3, 6, 4, 1.94, 15.44, 6.17, 8.16]
})

它有以下显示:

series_1    series_2
0   10.1    9.60
1   15.3    10.40
2   16.0    11.20
3   12.0    3.30
4   14.5    6.00
5   11.8    4.00
6   2.3     1.94
7   7.7     15.44
8   5.0     6.17
9   10.0    8.16

目标

就是得到如下输出:

series_1    series_2    diff_2
0   10.1    9.60        NaN
1   15.3    10.40       0.80
2   16.0    11.20       0.80
3   12.0    3.30        -7.90
4   14.5    6.00        2.70
5   11.8    4.00        -2.00
6   2.3     1.94        -2.06
7   7.7     15.44       13.50
8   5.0     6.17        -9.27
9   10.0    8.16        1.99

我的代码

为了达到所需的输出,我使用了以下代码并且它有效:

diff_2=[np.nan]

l=len(df)

for i in range(1, l):
    
    diff_2.append(df['series_2'][i] - df['series_2'][i-1])

df['diff_2'] = diff_2

我的代码有问题

我在这里复制了一个简化的数据框,我正在处理的真实数据框非常大,我的代码运行了将近 9 分钟!

我想要一个替代方案,让我能够快速获得输出,

非常感谢您的任何建议,谢谢。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这是一种方法,使用diff

    
    # create a new col by taking difference b/w consecutive rows of DF using diff
    df['diff_2']=df['series_2'].diff()
    df
    
        series_1    series_2    diff_2
    0   10.1    9.60    NaN
    1   15.3    10.40   0.80
    2   16.0    11.20   0.80
    3   12.0    3.30    -7.90
    4   14.5    6.00    2.70
    5   11.8    4.00    -2.00
    6   2.3     1.94    -2.06
    7   7.7     15.44   13.50
    8   5.0     6.17    -9.27
    9   10.0    8.16    1.99
    

    【讨论】:

      猜你喜欢
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多