重复每个项目不同的次数
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"]
我有一个数据框,其中一列包含项目名称,一列包含数字。我想创建一个列表,其中的项目名称在列中重复了多次。
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"]