Python 基于dataframe区块将不同的值分配到新列中

Python 基于dataframe区块将不同的值分配到新列中,python,pandas,Python,Pandas,我有一个数据帧: 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行中的每一块,它都

我有一个数据帧:

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
我尝试遍历dataframe,然后使用.loc分配列值


有没有更好/更快捷的方法?如果您的索引是RangeIndex,您可以使用它为c列创建值:

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

如果索引不是连续范围,则np.arange0,lendf.index//3+1。不能保证索引是数字,更不用说整数了。最好使用np.arangelendf//3+1