2017-10-07 62 views
1

我有一个数据框有大约100行。我想为每个行分配一个唯一的编号(不是来自索引,而是业务逻辑编号)。有一种方法可以分配唯一的键(数字)。我无法单独分配值。需要一些帮助Python - 数据框架,添加一列

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(时间)。

感谢

巴拉

回答

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 
+0

嘿!我想你错过了**我希望能够为所有单独的行分配唯一的编号**。这是关于为每一行创建唯一的ID。 –

+0

是的,但是OP也写了'(有生成唯一编号的业务逻辑,因为我正在做这个简单的int(time)'。所以我理解不同的问题。 – jezrael

1

也许是这样的:

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 

或从库与关键根:

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))]