1 回答
TA贡献1921条经验 获得超9个赞
如果我理解正确,您希望为每一行创建副本,其中一列中给出了n值。n这是一种方法:
df["new_id"] = df.Variable.apply(lambda x: list(range(x)))
df = df.explode("new_id")
输出:
Product Year Variable new_id
0 A 2018 2 0
0 A 2018 2 1
1 A 2019 4 0
1 A 2019 4 1
1 A 2019 4 2
1 A 2019 4 3
2 B 2018 2 0
2 B 2018 2 1
3 B 2019 3 0
3 B 2019 3 1
3 B 2019 3 2
熊猫 <= 0.24 的解决方案
如果由于某种原因,explode因为您使用的是旧版本的熊猫而不可用,您可以执行以下操作:
cols = df.columns
def make_df(r):
d = {k: r[k] for k in cols}
d["new_var"] = range(r["Variable"])
res = pd.DataFrame(d)
return res
dfs = []
for row in df.iterrows():
dfs.append(make_df(row[1]))
pd.concat(dfs)
输出是相同的。
添加回答
举报