【问题标题】:How to shift values using pandas in python dataframe? [duplicate]如何在 python 数据框中使用 pandas 移动值? [复制]
【发布时间】:2018-04-18 09:11:03
【问题描述】:

我有一个这样的数据框,

d = {'ID': ["A", "A", "B", "B", "C", "C", "D", "D", "E", "E", "F", "F"],


    'value': [23, 23, 52, 52, 36, 36, 46, 46, 9, 9, 110, 110]}

df = pd.DataFrame(data=d)

   ID  value
0   A     23
1   A     23
2   B     52
3   B     52
4   C     36
5   C     36
6   D     46
7   D     46
8   E      9
9   E      9
10  F    110
11  F    110

基本上,我复制原始数据集(n 行)。我想得到的数据框是这样的,

   ID  value
0   A     23
1   B     23
2   B     52
3   C     52
4   C     36
5   D     36
6   D     46
7   E     46
8   E      9
9   F      9

列下移一个单位并保留所有值对。所以,我输掉了第一个 A,最后一个 F 和最后两个值 110。最后,我有 2n-2 行。

【问题讨论】:

  • 为什么原始数据框的第11行消失了?

标签: python pandas numpy dataframe


【解决方案1】:

我认为需要:

df = df.set_index('ID').shift().iloc[1:-1].reset_index()
print (df)
  ID  value
0  A   23.0
1  B   23.0
2  B   52.0
3  C   52.0
4  C   36.0
5  D   36.0
6  D   46.0
7  E   46.0
8  E    9.0
9  F    9.0

【讨论】:

    【解决方案2】:

    我想这会解决你的问题

    import pandas as pd
    
    d = {'ID': ["A", "A", "B", "B", "C", "C", "D", "D", "E", "E","F","F"],
        'value': [23, 23, 52, 52, 36, 36, 46, 46, 9, 9, 110, 110]}
    
    df = pd.DataFrame(data=d)
    
    df['value']=df['value'].shift(1)
    
    df2=df[1:11] #here 11 is n-1,it depends on number of rows
    
    print(df2)
    

    【讨论】:

      【解决方案3】:

      因此,如果您只想将 ID 移动 -1 并排除最后 2 行:

      df['ID'] = df['ID'].shift(-1)
      result = df[:-2]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-06
        • 2014-07-24
        • 2020-08-31
        • 2019-05-30
        • 2023-03-16
        • 2015-04-04
        • 2021-08-26
        • 2018-06-22
        相关资源
        最近更新 更多