【问题标题】:Assign different values into a new column based on dataframe chunk根据数据框块将不同的值分配到新列中
【发布时间】:2018-12-28 18:00:00
【问题描述】:

我有一个数据框:

df = pd.DataFrame({'a':[1,2,3,4,5,6,7,8,9,10],'b':[100,100,100,100,100,100,100,100,100,100]})

    a    b
0   1  100
1   2  100
2   3  100
3   4  100
4   5  100
5   6  100
6   7  100
7   8  100
8   9  100
9  10  100 

我想创建一个列c,以便为每 3 行的块分配一个值。

我正在寻找的输出:

    a    b    c
0   1  100    1
1   2  100    1
2   3  100    1
3   4  100    2
4   5  100    2
5   6  100    2
6   7  100    3
7   8  100    3
8   9  100    3
9  10  100    4

我尝试遍历数据框,然后使用 .loc 分配列值。

有没有更好/更快的方法来做到这一点?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    如果您的索引是 RangeIndex,您可以使用它为您的 c 列创建值:

    df['c'] = df.index // 3 + 1
    

    【讨论】:

    • 并且,(np.arange(0, len(df.index)) // 3) + 1 如果index 不是连续范围。
    • 不保证索引是数字的,更不用说整数了。最好使用np.arange(len(df)) // 3 + 1
    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2013-05-09
    • 2021-07-05
    相关资源
    最近更新 更多