【问题标题】:How to Add Incremental Numbers to a New Column Using Pandas如何使用 Pandas 将增量数字添加到新列
【发布时间】:2016-08-10 00:05:36
【问题描述】:

我有这个简化的数据框:

ID   Fruit
F1   Apple
F2   Orange
F3   Banana 

我想在数据框的开头添加一个新列 df['New_ID'],其编号为 880,每行递增一。

输出应该是这样的:

New_ID   ID   Fruit
880      F1   Apple
881      F2   Orange
882      F3   Banana  

我尝试了以下方法:

df['New_ID'] = ["880"] # but I want to do this without assigning it the list of numbers literally

知道如何解决这个问题吗?

谢谢!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:
    df.insert(0, 'New_ID', range(880, 880 + len(df)))
    df
    

    【讨论】:

    • 第一个参数loc插入索引,即0 .
    • 注意:这会就地修改数据框,即不要重新分配您的 df df = df.insert(.....)
    • @momo 绝对。感谢您指出这一点。
    • @piRSquared 如何按浮点数递增?我需要添加一个“时间”列,从 0 开始的每一行之后添加 0.002。
    【解决方案2】:

    这里:

    df = df.reset_index()
    df = df.rename(columns={"index":"New_ID"})
    df['New_ID'] = df.index + 880
    

    【讨论】:

    • 很好的解决方案,但它没有在数据框的开头插入New_ID 列。
    • 或者照 piRSquared 说的做,他的回答更好。我应该想到这一点,但当你问你的问题时,我正在操纵索引,我想我坐在凹槽里。
    • 这是假设索引是一个范围索引。
    【解决方案3】:

    您也可以简单地将您的 pandas 列设置为长度与数据框相同的 id 值列表。

    df['New_ID'] = range(880, 880+len(df))
    

    参考文档:https://pandas.pydata.org/pandas-docs/stable/missing_data.html

    【讨论】:

    • 如果它实际上将新的 ID 列放在第一个位置,这将是最好/最简单的解决方案,但据我所知,这会将它放在最后一个位置,而不是 OP 要求的。对于把我带到这里的问题,我不需要它,所以这是最简单的解决方案。谢谢!
    【解决方案4】:

    对于索引从 0 开始并以 1 递增(即默认值)的 pandas DataFrame,您可以这样做:

    df.insert(0, 'New_ID', df.index + 880)
    

    如果您希望New_ID 成为第一列。否则,如果您不介意它在最后:

    df['New_ID'] = df.index + 880
    

    【讨论】:

      【解决方案5】:

      我使用了以下代码:

      df.insert(0, 'id', range(1, 1 + len(df)))
      

      所以我的“id”列是:

      1, 2, 3, ...

      【讨论】:

        【解决方案6】:
        import numpy as np
        
        df['New_ID']=np.arange(880,880+len(df.Fruit))
        df=df.reindex(columns=['New_ID','ID','Fruit'])
        

        【讨论】:

          【解决方案7】:
          df = df.assign(New_ID=[880 + i for i in xrange(len(df))])[['New_ID'] + df.columns.tolist()]
          
          >>> df
             New_ID  ID   Fruit
          0     880  F1   Apple
          1     881  F2  Orange
          2     882  F3  Banana
          

          【讨论】:

            猜你喜欢
            • 2022-10-25
            • 2022-07-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-02-22
            • 2020-11-26
            相关资源
            最近更新 更多