【问题标题】:Shifting values in pandas by another column (python)将熊猫中的值移动另一列(python)
【发布时间】:2021-09-12 22:07:56
【问题描述】:

一天的好时光。我有一个数据,我必须将“VALUES”列移动一个,其中“Year”列在 Pandas 中等于 2008 年。

总结果类似于列“shifted_value”。 如果你能帮我处理这个案子,我会祝福你的。

您可以通过该链接下载的数据示例:https://docs.google.com/spreadsheets/d/1LpqWPJjaiCT_GAJmEMPq-GCYg2qD-AJz/edit?usp=sharing&ouid=104703556348297089571&rtpof=true&sd=true

非常感谢。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    试试:

    df["shifted_value"] = (
        df.groupby(df.Year.eq(2008).cumsum())["VALUES"].shift().fillna("")
    )
    print(df)
    

    打印:

        Year  AREAS   VALUES shifted_value
    0   2008  AREA1      123              
    1   2009  AREA1      456           123
    2   2010  AREA1     5678           456
    3   2011  AREA1      890          5678
    4   2012  AREA1   3667,5           890
    5   2013  AREA1   4419,8        3667,5
    6   2014  AREA1   5172,1        4419,8
    7   2015  AREA1   5924,4        5172,1
    8   2016  AREA1   6676,7        5924,4
    9   2017  AREA1     7429        6676,7
    10  2018  AREA1   8181,3          7429
    11  2008  AREA2   8933,6              
    12  2009  AREA2   9685,9        8933,6
    13  2010  AREA2  10438,2        9685,9
    14  2011  AREA2  11190,5       10438,2
    15  2012  AREA2  11942,8       11190,5
    16  2013  AREA2  12695,1       11942,8
    17  2014  AREA2  13447,4       12695,1
    18  2015  AREA2  14199,7       13447,4
    19  2016  AREA2    14952       14199,7
    20  2017  AREA2  15704,3         14952
    21  2018  AREA2  16456,6       15704,3
    

    【讨论】:

    • 我知道这是预期的输出,但如果你用"" 填充,列的dtype 将是object... 至少,让它为NaN 以保留数字数据或填充0.
    【解决方案2】:

    您似乎想按AREAS 分组并转移VALUES

    df['shifted_value'] = df.groupby('AREAS')['VALUES'].shift()
    

    输出:

    >>> df
        Year  AREAS   VALUES shifted_value
    0   2008  AREA1      123           NaN
    1   2009  AREA1      456           123
    2   2010  AREA1     5678           456
    3   2011  AREA1      890          5678
    4   2012  AREA1   3667,5           890
    5   2013  AREA1   4419,8        3667,5
    6   2014  AREA1   5172,1        4419,8
    7   2015  AREA1   5924,4        5172,1
    8   2016  AREA1   6676,7        5924,4
    9   2017  AREA1     7429        6676,7
    10  2018  AREA1   8181,3          7429
    11  2008  AREA2   8933,6           NaN
    12  2009  AREA2   9685,9        8933,6
    13  2010  AREA2  10438,2        9685,9
    14  2011  AREA2  11190,5       10438,2
    15  2012  AREA2  11942,8       11190,5
    16  2013  AREA2  12695,1       11942,8
    17  2014  AREA2  13447,4       12695,1
    18  2015  AREA2  14199,7       13447,4
    19  2016  AREA2    14952       14199,7
    20  2017  AREA2  15704,3         14952
    21  2018  AREA2  16456,6       15704,3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多