【发布时间】:2016-08-04 16:01:33
【问题描述】:
假设我有一个像这样的 pandas DataFrame:
df = pd.DataFrame({'Name': ['John Doe', 'Jane Smith', 'John Doe', 'Jane Smith','Jack Dawson','John Doe']})
df:
Name
0 John Doe
1 Jane Smith
2 John Doe
3 Jane Smith
4 Jack Dawson
5 John Doe
如果名称相同,我想添加一个具有相同 uuid 的列。比如上面的DataFrame应该变成:
df:
Name UUID
0 John Doe 6d07cb5f-7faa-4893-9bad-d85d3c192f52
1 Jane Smith a709bd1a-5f98-4d29-81a8-09de6e675b56
2 John Doe 6d07cb5f-7faa-4893-9bad-d85d3c192f52
3 Jane Smith a709bd1a-5f98-4d29-81a8-09de6e675b56
4 Jack Dawson 6a495c95-dd68-4a7c-8109-43c2e32d5d42
5 John Doe 6d07cb5f-7faa-4893-9bad-d85d3c192f52
uuid 应该由 uuid.uuid4() 函数生成。
我目前的想法是使用 groupby("Name").cumcount() 来识别哪些行具有相同的名称和哪些不同。然后我会创建一个包含 cumcount 键和 uuid 值的字典,并使用它将 uuid 添加到 DF。
虽然这可行,但我想知道是否有更有效的方法来做到这一点?
【问题讨论】: