Python数据帧,添加列

2024-05-16 08:54:05 发布

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

我有一个大约有100行的数据帧。我想为每一行分配一个唯一的编号(不是来自索引,而是基于业务逻辑的编号)。有一种分配唯一键(数字)的方法。我无法单独赋值。需要帮助吗

Data Frame data is as follows

customer_key
825486
457347
641996
1006860
1078894

分配唯一ID的方法是

def getuniqid(data):
    from time import time
    skey_list = []
    for row in data.count()-1:
            skey_list.append(int(time()*10000000))
            return skey_list

我希望能够为所有单独的行分配唯一的编号(在生成唯一编号的背后有业务逻辑,因为我正在做这个简单的int(time)

感谢您的帮助

谢谢

巴拉


Tags: 数据方法datatimeis数字逻辑业务
2条回答

我认为您需要按长度df创建的范围进行循环,然后在for循环之外获得return

def getuniqid(data):
    from time import time
    skey_list = []
    for row in range(len(data)):
            skey_list.append(int(time()*10000000))
    return skey_list

data['new'] = getuniqid(data)

或者可能由DataFrame的某列循环:

def getuniqid(data):
    from time import time
    skey_list = []
    for row in data['customer_key']:
            skey_list.append(int(time()*10000000))
    return skey_list

data['new'] = getuniqid(data)

print (data)
   customer_key                new
0        825486  15073574836092810
1        457347  15073574836092810
2        641996  15073574836092810
3       1006860  15073574836092810
4       1078894  15073574836092810

可能是这样的:

import time
import pandas as pd
from io import StringIO

string = u"""customer_key
825486
457347
641996
1006860
1078894"""

df = pd.read_csv(StringIO(string))

millisecondsnow = int(round(time.time() * 1000))
df["key"] = [millisecondsnow + i for i in range(len(df))]

输出:

    customer_key    key
0   825486  1507368278082
1   457347  1507368278083
2   641996  1507368278084
3   1006860 1507368278085
4   1078894 1507368278086

或从具有键gen的库中:

import uuid
import pandas as pd

string = u"""customer_key
825486
457347
641996
1006860
1078894"""

df = pd.read_csv(StringIO(string))

df["key"] = [uuid.uuid4() for _ in range(len(df))]

相关问题 更多 >