如何将按数据帧分组的另一行减去另一行?

通用汽车

我有一些这个数据帧'init'值('value''value2'),我想减去至中期值'mid'和最终值'final'一旦我的ID分组。

import pandas as pd
df = pd.DataFrame({ 
    'value': [100, 120, 130, 200, 190,210],
    'value2': [2100, 2120, 2130, 2200, 2190,2210],  
     'ID': [1, 1, 1, 2, 2, 2], 
     'state': ['init','mid', 'final', 'init', 'mid', 'final'], 
 })

我的尝试是通过提取找到的索引,然后将值按以下方式分组'init''mid'然后'final'从中减去'mid''final''init''ID'

group = df.groupby('ID')
group['diff_1_f'] = group['value'].iloc[group.index[group['state'] == 'final'] - group['value'].iloc[group.index[dfs['state'] == 'init']]]]
group['diff_2_f'] =  group['value2'].iloc[group.index[group['state'] == 'final'] - group['value'].iloc[group.index[dfs['state'] == 'init']]]
group['diff_1_m'] = group['value'].iloc[group.index[group['state'] == 'mid'] - group['value'].iloc[group.index[dfs['state'] == 'init']]]
group['diff_2_m'] =  group['value2'].iloc[group.index[group['state'] == 'mid'] - group['value'].iloc[group.index[dfs['state'] == 'init']]]  

但是,当然不行。如何获得以下结果:

df = pd.DataFrame({ 
    'diff_value': [20, 30, -10,10],
    'diff_value2': [20, 30, -10,10],  
     'ID': [ 1, 1, 2, 2], 
     'state': ['mid', 'final', 'mid', 'final'], 
 }) 

也是分组形式。

耶斯列尔

采用:

#columns names in list for subtract
cols = ['value', 'value2']
#new columns names created by join
new = [c + '_diff' for c in cols]
#filter rows with init
m = df['state'].ne('init')

#add init rows to new columns by  join and filter no init rows
df1 = df.join(df[~m].set_index('ID')[cols], lsuffix='_diff', on='ID')[m]
#subtract with numpy array by .values for prevent index alignment
df1[new] = df1[new].sub(df1[cols].values)
#remove helper columns
df1 = df1.drop(cols, axis=1)
print (df1)
   value_diff  value2_diff  ID  state
1          20           20   1    mid
2          30           30   1  final
4         -10          -10   2    mid
5          10           10   2  final

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将一个数据帧的一行的EACH值与另一数据帧的一行的所有值相乘

来自分类Dev

减去另一行

来自分类Dev

如何将数据帧附加到另一个数据帧的每一行?

来自分类Dev

如何从一个大熊猫数据帧的行中减去另一行?

来自分类Dev

如何将按层次结构索引的Pandas DataFrame的一行分配给另一行?

来自分类Dev

如何将按层次结构索引的Pandas DataFrame的一行分配给另一行?

来自分类Dev

将向量减去到数据帧的每一行

来自分类Dev

如何将输出打印在另一行下面?

来自分类Dev

如何将flexbox元素移至另一行?

来自分类Dev

如何将输出打印在另一行的下面?

来自分类Dev

从条件中减去另一行

来自分类Dev

如何将逗号分隔的ID从一行移动到另一行?

来自分类Dev

如何将一行添加到另一行

来自分类Dev

如何将一行与另一行进行比较?

来自分类Dev

如何将文本从一行添加到另一行的末尾?

来自分类Dev

你如何使用 Seq. 按 F# 中的函数平均以平均一行中的数据,按另一行中的数据分组?

来自分类Dev

熊猫将一行除以另一行,然后输出到同一数据帧中的另一行

来自分类Dev

Spark SQL:从一个数据帧的相应行中减去另一行

来自分类Dev

如何将数据帧1的每一行与数据帧2的每一行进行比较?

来自分类Dev

如何将数据帧1的每一行与数据帧2的每一行进行比较?

来自分类Dev

如何从r中的另一行中减去一行?

来自分类Dev

如何获得分组数据帧的某一行?

来自分类Dev

如何将一行数据与Google表格中另一张表的每一行数据进行比较?

来自分类Dev

如何将一行数据与Google表格中另一张表的每一行数据进行比较?

来自分类Dev

如何将实际的实际行与另一列熊猫的前一行求和?

来自分类Dev

在MySQL中从另一行减去另一行

来自分类Dev

如何将数据帧的两行合并为一行?

来自分类Dev

如何将PANDAS数据帧的一行添加到其余行?

来自分类Dev

SQL Server中的UNION如何将一行与另一行进行比较?

Related 相关文章

  1. 1

    如何将一个数据帧的一行的EACH值与另一数据帧的一行的所有值相乘

  2. 2

    减去另一行

  3. 3

    如何将数据帧附加到另一个数据帧的每一行?

  4. 4

    如何从一个大熊猫数据帧的行中减去另一行?

  5. 5

    如何将按层次结构索引的Pandas DataFrame的一行分配给另一行?

  6. 6

    如何将按层次结构索引的Pandas DataFrame的一行分配给另一行?

  7. 7

    将向量减去到数据帧的每一行

  8. 8

    如何将输出打印在另一行下面?

  9. 9

    如何将flexbox元素移至另一行?

  10. 10

    如何将输出打印在另一行的下面?

  11. 11

    从条件中减去另一行

  12. 12

    如何将逗号分隔的ID从一行移动到另一行?

  13. 13

    如何将一行添加到另一行

  14. 14

    如何将一行与另一行进行比较?

  15. 15

    如何将文本从一行添加到另一行的末尾?

  16. 16

    你如何使用 Seq. 按 F# 中的函数平均以平均一行中的数据,按另一行中的数据分组?

  17. 17

    熊猫将一行除以另一行,然后输出到同一数据帧中的另一行

  18. 18

    Spark SQL:从一个数据帧的相应行中减去另一行

  19. 19

    如何将数据帧1的每一行与数据帧2的每一行进行比较?

  20. 20

    如何将数据帧1的每一行与数据帧2的每一行进行比较?

  21. 21

    如何从r中的另一行中减去一行?

  22. 22

    如何获得分组数据帧的某一行?

  23. 23

    如何将一行数据与Google表格中另一张表的每一行数据进行比较?

  24. 24

    如何将一行数据与Google表格中另一张表的每一行数据进行比较?

  25. 25

    如何将实际的实际行与另一列熊猫的前一行求和?

  26. 26

    在MySQL中从另一行减去另一行

  27. 27

    如何将数据帧的两行合并为一行?

  28. 28

    如何将PANDAS数据帧的一行添加到其余行?

  29. 29

    SQL Server中的UNION如何将一行与另一行进行比较?

热门标签

归档