如何基于其他行上的条件创建列-Pandas Dataframe?

宝宝

我有以下问题:

名为df1的数据框如下所示:

    Id      PVF PM_year Year
0   A6489   75  25      2018
1   A175    56  54      2018
2   A2856   34  65      2018
3   A6489   35  150     2019
4   A175    45  700     2019
5   A2856   55  120     2019
6   A6489   205 100     2020
7   A2856   35  445     2020

我想创建一个名为PM_previous_year的新列,该列对于每个组合(ID + Year)等于相同ID和上一年的PM_year的值...

范例:

对于索引为3的行,Id为'A6489',年份为2019。因此,新列“ PM_previous_year”的值应为ID相同('A6489')并且year等于的行的值2018(2019-1)。在这个简单的示例中,它对应于索引为0的行,索引为3的行中新列的期望值为25。

最后,此简短示例的目标DataFrame df2如下所示:

    Id     PVF  PM_year Year    PM_previous_year
0   A6489   75  25      2018    NaN
1   A175    56  54      2018    NaN
2   A2856   34  65      2018    NaN
3   A6489   35  150     2019    25.0
4   A175    45  700     2019    54.0
5   A2856   55  120     2019    65.0
6   A6489   205 100     2020    150.0
7   A2856   35  445     2020    120.0

我还没有找到任何明显的解决方案。也许有一种方法可以重塑df,但我对此并不十分熟悉。如果有人有任何想法,我将不胜感激。谢谢

耶斯列尔

如果可能,简化解决方案和PM_year每次Id使用的转移

df['PM_previous_year'] = df.groupby('Id')['PM_year'].shift()
print (df)
      Id  PVF  PM_year  Year  PM_previous_year
0  A6489   75       25  2018               NaN
1   A175   56       54  2018               NaN
2  A2856   34       65  2018               NaN
3  A6489   35      150  2019              25.0
4   A175   45      700  2019              54.0
5  A2856   55      120  2019              65.0
6  A6489  205      100  2020             150.0
7  A2856   35      445  2020             120.0

要么:

s = df.pivot('Year','Id','PM_year').shift().unstack().rename('PM_previous_year')

df = df.join(s, on=['Id','Year'])
print (df)
      Id  PVF  PM_year  Year  PM_previous_year
0  A6489   75       25  2018               NaN
1   A175   56       54  2018               NaN
2  A2856   34       65  2018               NaN
3  A6489   35      150  2019              25.0
4   A175   45      700  2019              54.0
5  A2856   55      120  2019              65.0
6  A6489  205      100  2020             150.0
7  A2856   35      445  2020             120.0

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何基于Python Pandas中的其他列在DataFrame中创建新列?

来自分类Dev

Python:pandas DataFrame基于其他列的新列

来自分类Dev

如何在Pandas中基于其他df创建特定的DataFrame?

来自分类Dev

根据Pandas DataFrame中其他列的条件创建新列

来自分类Dev

根据其他列在Pandas DataFrame中创建新列

来自分类Dev

如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

来自分类Dev

Pandas DataFrame 条件分组

来自分类Dev

迭代创建pandas DataFrame

来自分类Dev

使用Pandas DataFrame中其他两列的键和值创建字典列

来自分类Dev

pandas dataframe:返回列,该列是其他列的压缩

来自分类Dev

Pandas DataFrame:如何创建多列索引

来自分类Dev

截断 Pandas DataFrame 的行

来自分类Dev

Pandas DataFrame列串联

来自分类Dev

Pandas DataFrame列串联

来自分类Dev

Pandas - 基于特定列的值在 DataFrame 中创建单独的列

来自分类Dev

Pandas Dataframe根据其他列的计数添加列

来自分类Dev

Pandas DataFrame基于多个条件的分组添加新的列值

来自分类Dev

基于列名称条件的pandas dataframe列值总和

来自分类Dev

如何基于基于行的计算向我的Pandas DataFrame追加新列?

来自分类Dev

基于条件的Pandas DataFrame重复值

来自分类Dev

基于条件的Pandas DataFrame重复值

来自分类Dev

在dataframe Column上应用函数以获取其他几个列Pandas Python

来自分类Dev

基于过滤器在Pandas DataFrame中创建新列

来自分类Dev

Pandas DataFrame)一列替换其他df

来自分类Dev

如何基于组合 1 和多列在 Pandas DataFrame 中创建新列

来自分类Dev

Pandas Dataframe:如何在其他列中添加具有出现次数的列

来自分类Dev

在Pandas Dataframe中保存其他属性

来自分类Dev

基于Pandas DataFrame矩阵的计算

来自分类Dev

如何基于一组行在Pandas DataFrame中创建新列

Related 相关文章

  1. 1

    如何基于Python Pandas中的其他列在DataFrame中创建新列?

  2. 2

    Python:pandas DataFrame基于其他列的新列

  3. 3

    如何在Pandas中基于其他df创建特定的DataFrame?

  4. 4

    根据Pandas DataFrame中其他列的条件创建新列

  5. 5

    根据其他列在Pandas DataFrame中创建新列

  6. 6

    如何基于另一个 DataFrame 中的列在 Pandas DataFrame 中创建新列?

  7. 7

    Pandas DataFrame 条件分组

  8. 8

    迭代创建pandas DataFrame

  9. 9

    使用Pandas DataFrame中其他两列的键和值创建字典列

  10. 10

    pandas dataframe:返回列,该列是其他列的压缩

  11. 11

    Pandas DataFrame:如何创建多列索引

  12. 12

    截断 Pandas DataFrame 的行

  13. 13

    Pandas DataFrame列串联

  14. 14

    Pandas DataFrame列串联

  15. 15

    Pandas - 基于特定列的值在 DataFrame 中创建单独的列

  16. 16

    Pandas Dataframe根据其他列的计数添加列

  17. 17

    Pandas DataFrame基于多个条件的分组添加新的列值

  18. 18

    基于列名称条件的pandas dataframe列值总和

  19. 19

    如何基于基于行的计算向我的Pandas DataFrame追加新列?

  20. 20

    基于条件的Pandas DataFrame重复值

  21. 21

    基于条件的Pandas DataFrame重复值

  22. 22

    在dataframe Column上应用函数以获取其他几个列Pandas Python

  23. 23

    基于过滤器在Pandas DataFrame中创建新列

  24. 24

    Pandas DataFrame)一列替换其他df

  25. 25

    如何基于组合 1 和多列在 Pandas DataFrame 中创建新列

  26. 26

    Pandas Dataframe:如何在其他列中添加具有出现次数的列

  27. 27

    在Pandas Dataframe中保存其他属性

  28. 28

    基于Pandas DataFrame矩阵的计算

  29. 29

    如何基于一组行在Pandas DataFrame中创建新列

热门标签

归档