我有一个大约有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)
任何帮助都是非常感谢的。
谢谢
巴拉
发布于 2017-10-07 14:09:13
我认为你需要由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发布于 2017-10-07 17:25:46
可能是这样的:
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或者来自一个包含key-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))]https://stackoverflow.com/questions/46617163
复制相似问题