python - Pandas - 如何创建从连续两行中的值派生的新列?

标签 python python-3.x pandas dataframe

我有以下数据框 -

ID    Name   Distance   Time   Base    Height
1     A      10         2      12      2
2     A      20         4      14      3
3     B      30         6      16      4
4     B      40         8      18      5
5     C      50         10     20      6   
6     C      60         12     22      8

我想创建新列Speed、Tarea、Speed_ratio、Tarea_ratio,其值源自名称为A,B,C的行中的值,如下 -

ID    Name   Distance   Time   Base    Height   Speed    Tarea    Speed_ratio   Tarea_ratio
1     A      10         2      12      2        5        12       1             0.5714
2     A      20         4      14      3        5        21       NA            NA   
3     B      30         6      16      4        5        32       1             0.7111 
4     B      40         8      18      5        5        45       NA            NA
5     C      50         10     20      6        5        60       1             0.6818    
6     C      60         12     22      8        5        88       NA            NA 

这可以做到吗?谢谢。

最佳答案

您可以执行以下操作:

In [431]: df['Speed'] = df.Distance.div(df.Time)
In [433]: df['Tarea'] = df.Base.mul(df.Height)/2

In [447]: df['Speed_ratio'] = df.Speed / df.groupby('Name').Speed.shift(-1)
    
In [450]: df['Tarea_ratio'] = df.Tarea / df.groupby('Name').Tarea.shift(-1)

In [451]: df
Out[451]: 
   ID Name  Distance  Time  Base  Height  Speed  Tarea  Speed_ratio  Tarea_ratio
0   1    A        10     2    12       2    5.0   12.0          1.0     0.571429
1   2    A        20     4    14       3    5.0   21.0          NaN          NaN
2   3    B        30     6    16       4    5.0   32.0          1.0     0.711111
3   4    B        40     8    18       5    5.0   45.0          NaN          NaN
4   5    C        50    10    20       6    5.0   60.0          1.0     0.681818
5   6    C        60    12    22       8    5.0   88.0          NaN          NaN

关于python - Pandas - 如何创建从连续两行中的值派生的新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64691558/

相关文章:

python - 如何仅将列 pandas python 中的科学值转换为 int

python - 如何使用Python控制Chrome

Python:尝试形成 SQL 语句时出现字符串操作问题

python - Scrapy 爬虫蜘蛛不跟踪链接

python - 在 Python 3.7+ 中使用 subprocess.run 进行多个输入

python - 合并 Pandas 中的几个数据透视表

python - flatc 是否验证给定 JSON 的 Flatbuffer 模式的必填字段?

python - 嵌套字典的划分

python - 在另一个列表中查找一个列表中的项目?

python - 带有时区的 pandas 数据框的 to_csv 错误