将uuid添加到pandas DataFram中的新列

2024-10-01 17:36:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望为pandas数据帧中新列中的每一行添加一个uuid。这显然会用相同的uuid填充列:

import uuid
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(4,3), columns=list('abc'),
                  index=['apple', 'banana', 'cherry', 'date'])
df['uuid'] = uuid.uuid4()
print(df)

               a         b         c                                  uuid
apple   0.687601 -1.332904 -0.166018  34115445-c4b8-4e64-bc96-e120abda1653
banana -2.252191 -0.844470  0.384140  34115445-c4b8-4e64-bc96-e120abda1653
cherry -0.470388  0.642342  0.692454  34115445-c4b8-4e64-bc96-e120abda1653
date   -0.943255  1.450051 -0.296499  34115445-c4b8-4e64-bc96-e120abda1653

我要找的是“uuid”列的每一行中都有一个新的uuid。我也尝试过使用.apply()和.map()但没有成功。在


Tags: 数据importapplepandasdfdateuuidas
3条回答

这是一种方法:

df['uuid'] = [uuid.uuid4() for _ in range(len(df.index))]

这里我不能说计算效率,但我更喜欢这里的语法,因为它与我通常用来生成新行的其他apply lambda修改是一致的:

df['uuid'] = df.apply(lambda _: uuid.uuid4(), axis=1)

您还可以选择一个随机列来删除axis需求(为什么axis=0是默认值,我永远无法理解):

^{pr2}$

从技术上讲,这些方法的缺点是传入了一个实际上没有使用的变量(_)。有能力做类似于lambda: uuid.uuid4()的功能会稍微好一点,但是{}不支持没有参数的lambas,这是合理的,因为它的用例将相当有限。在

from uuid import uuid4
df['uuid'] = df.index.to_series().map(lambda x: uuid4())

相关问题 更多 >

    热门问题