根据列值创建行号

我的 jupyter notebook 中有以下数据集作为输入:


Product   Year    Variable

A         2018        2

A         2019        4

B         2018        2

B         2019        3

我想知道在我的数据集中创建循环或其他东西或排序的最快方法是什么,以便我得到以下输出:


Product   Year    Variable   Row_Num

A         2018        2         1

A         2018        2         2 

A         2019        4         1

A         2019        4         2

A         2019        4         3

A         2019        4         4

B         2018        2         1

B         2018        2         2

and so on...

TL;DR - 基于特定列中的变量,我想创建行。例如,如果变量为 3,我想创建该行的 3 个副本,其中一列的值为 1、2、3。


我认为我发现的一种方法是首先根据我的变量创建重复项,然后使用类似于 rank() 或 row_number() 的函数来创建我的“row_num”列。如果任何人都可以分享其他可能的方法来做同样的事情,那将会很有帮助。😄


Qyouu
浏览 91回答 1
1回答

郎朗坤

如果我理解正确,您希望为每一行创建副本,其中一列中给出了n值。n这是一种方法:df["new_id"] = df.Variable.apply(lambda x: list(range(x)))df = df.explode("new_id")输出:&nbsp; Product&nbsp; Year&nbsp; Variable new_id0&nbsp; &nbsp; &nbsp; &nbsp;A&nbsp; 2018&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; 00&nbsp; &nbsp; &nbsp; &nbsp;A&nbsp; 2018&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; 11&nbsp; &nbsp; &nbsp; &nbsp;A&nbsp; 2019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; 01&nbsp; &nbsp; &nbsp; &nbsp;A&nbsp; 2019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; 11&nbsp; &nbsp; &nbsp; &nbsp;A&nbsp; 2019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; 21&nbsp; &nbsp; &nbsp; &nbsp;A&nbsp; 2019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; &nbsp; 32&nbsp; &nbsp; &nbsp; &nbsp;B&nbsp; 2018&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; 02&nbsp; &nbsp; &nbsp; &nbsp;B&nbsp; 2018&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; &nbsp; 13&nbsp; &nbsp; &nbsp; &nbsp;B&nbsp; 2019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; 03&nbsp; &nbsp; &nbsp; &nbsp;B&nbsp; 2019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; 13&nbsp; &nbsp; &nbsp; &nbsp;B&nbsp; 2019&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; &nbsp; 2熊猫 <= 0.24 的解决方案如果由于某种原因,explode因为您使用的是旧版本的熊猫而不可用,您可以执行以下操作:cols = df.columnsdef make_df(r):&nbsp; &nbsp; d = {k: r[k] for k in cols}&nbsp; &nbsp; d["new_var"] = range(r["Variable"])&nbsp; &nbsp; res = pd.DataFrame(d)&nbsp; &nbsp; return resdfs = []for row in df.iterrows():&nbsp; &nbsp; dfs.append(make_df(row[1]))&nbsp; &nbsp;&nbsp;pd.concat(dfs)输出是相同的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python