我的cust_valid Csv文件如下所示
Territory NoOfCustomer
D00060 10
D00061 20
D00065 70
D00067 90
我必须根据NoOfCustomer的数量创建一个唯一ID,例如If NoOfCustomer <= 50 那么我必须为领地D00060创建10个不同的唯一ID,并为领地D00061创建10个不同的唯一ID。
我在这里以类似熊猫的格式读取我的csv文件
csv_file = 'cust_valid.csv'
df=pd.read_csv(csv_file,delimiter="|")
过滤出的客户<= 50
low_dense = df['NoOfCustomer'] <=50
然后像这样重复low_dense
for idx, item in df[low_dense].iterrows():
???
我在这里陷入了嵌套循环。我需要做一个嵌套循环,还是可以通过其他任何方式完成。
我的输出看起来像
Territory NoOfCustomers UniqueID
D00060 10 0001AB9BHBHB
D00060 10 0001AB8HHJJL
D00060 10 0001AB7JHJHJ
D00060 10 0001AB9EWGHJ
D00060 10 0001AB0JIJKJ
答案 0 :(得分:0)
问题有点不清楚如何存储这些ID,但是如果要在同一行中存储它们,可以这样操作:
def f(x):
return [str(uuid.uuid4()) for i in range(10)]
df = pd.DataFrame({"Territory": ['D60','D61','D65'], 'NoC': [10,20,70] })
df["Ids"] = df[df['NoC'] <=50].apply(f,axis =1)
这将在具有<= 50个客户的行上添加一个包含10个id的数组的列。
(在修改了相关输出之后)。您可以像这样继续:
df = pd.merge(df[['NoC','Territory']],df['Ids'].str.split(',',expand=True),left_index=True,right_index=True)
df = pd.melt(df,id_vars = ['NoC','Territory']).sort_values(['Territory','variable'])
哪一行将具有唯一的ID。