重复每个项目不同的次数

Repeating each item a different number of times

我有一个数据框,其中一列包含项目名称,一列包含数字。我想创建一个列表,其中的项目名称在列中重复了多次。

item number
cat 2
dog 3
parrot 4

我想要的输出是

item
cat
cat
dog
dog
dog
parrot
parrot
parrot
parrot

我觉得我和这段代码很接近:

for index in df.iterrows():
    for x in range(2):
        print(df.item)

但是,我找不到用数据帧外的数字替换范围内的 2 的方法。 df.numbers 好像不行。

如您所说,您想要的输出是 list,使用@Michael 的评论,您可以这样做:

list(df.item.repeat(df.number))

输出将是:

['cat', 'cat', 'dog', 'dog', 'dog', 'parrot', 'parrot', 'parrot', 'parrot']

如果您热衷于使用 .iterrows(),那么您可能会这样做:

import pandas

df = pandas.DataFrame([
    {"item": "cat", "number": 2},
    {"item": "dog", "number": 3},
    {"item": "parrot", "number": 4},
])

new_list = []
for index, row in df.iterrows():
    new_list.extend([row["item"]] * row["number"])

print(new_list)

这取决于["x"] * 3 === ["x", "x", "x"]