我有一个带有一列的示例数据帧df:
Cost
30
49
98
10
37
20
10
48
70
20
30
40
50
29
90
39
30
29
50
40
和一个列表:id_list = ["A","B","C","D"]
是具有4种不同id类型的列表。我想在数据框中创建一个新列,其中前5个成本值将为“ A”,随后5个成本值将为“ B” .....,后5个成本值将为“ D”。因此,我想重复id_list的元素5次,新的df将如下所示:
Cost ID
30 A
49 A
98 A
10 A
37 A
20 B
10 B
48 B
70 B
20 B
30 C
40 C
50 C
29 C
90 C
39 D
30 D
29 D
50 D
40 D
我的实际数据帧有很多行,而实际的id_list有很多元素。 行号是5的倍数,因此将在最终数据帧中完全填充。 一般来说,我知道如何在pandas数据框中添加具有特定值的列 但是我不知道如何用重复的值来做到这一点。 你能建议我如何在python中做到这一点吗? 预先感谢您的帮助
答案 0 :(得分:4)
从numpy
到repeat
df['New']=np.repeat(id_list,5)
df
Out[23]:
Cost New
0 30 A
1 49 A
2 98 A
3 10 A
4 37 A
5 20 B
6 10 B
7 48 B
8 70 B
9 20 B
10 30 C
11 40 C
12 50 C
13 29 C
14 90 C
15 39 D
16 30 D
17 29 D
18 50 D
19 40 D
答案 1 :(得分:2)
let myData = [];
for(let index in data) {
myData.push(data[index]);
}
df.assign(ID=sum(zip(*[id_list] * 5), tuple()))
Cost ID
0 30 A
1 49 A
2 98 A
3 10 A
4 37 A
5 20 B
6 10 B
7 48 B
8 70 B
9 20 B
10 30 C
11 40 C
12 50 C
13 29 C
14 90 C
15 39 D
16 30 D
17 29 D
18 50 D
19 40 D
答案 2 :(得分:1)
我建议这样的事情,它利用python所做的v_ref
扩展:
[item]*n => [item, item, item, ...]
然后您可以将列添加到数据框中。