Python 如何为列中的新值复制pd.Dataframe中的值

Python 如何为列中的新值复制pd.Dataframe中的值,python,pandas,Python,Pandas,假设我有数据帧 A B C id 0 1 2 3 1 1 2 3 4 1 给定了id的值列表,例如[1,2,3]如何获取 A B C id 0 1 2 3 1 1 2 3 4 1 2 1 2 3 2 3 2 3 4 2 4 1 2 3 3 5 2 3 4 3 以最方便有效的方式?尝试重复索引,然后重复id列表: id_list = [1,2,3] (df.loc[df.index.repeat(len(id_list))] .assign(id=np.re

假设我有数据帧

   A B C id
0  1 2 3 1
1  2 3 4 1
给定了
id
的值列表,例如
[1,2,3]
如何获取

   A B C id
0  1 2 3 1
1  2 3 4 1
2  1 2 3 2
3  2 3 4 2
4  1 2 3 3
5  2 3 4 3

以最方便有效的方式?

尝试重复索引,然后重复id列表:

id_list = [1,2,3]

(df.loc[df.index.repeat(len(id_list))]
   .assign(id=np.repeat(id_list, len(df)))
)
输出:

   A  B  C  id
0  1  2  3   1
0  1  2  3   1
0  1  2  3   2
1  2  3  4   2
1  2  3  4   3
1  2  3  4   3
另一种技巧(仅用于学习目的,没有效率):

concat,然后将
id
与list元素组合在一起

idx = [1,2,3]
y = pd.concat([df]*len(idx))
y.assign(id=y.groupby(y.index)['id'].transform(lambda x:x.mul(idx))).reset_index(drop=True)

A. B C 身份证件 0 1. 2. 3. 1. 1. 2. 3. 4. 1. 2. 1. 2. 3. 2. 3. 2. 3. 4. 2. 4. 1. 2. 3. 3. 5. 2. 3. 4. 3.