簡體   English   中英

為 Pandas 中的每個組添加一個新列

[英]add a new column for every group in Pandas

我有以下格式的熊貓數據框

 id   name   zip
 123  aaa    614
 123  nnn    615
 341  yun    318
 441  ros    911

對於每組唯一 id,我根據列 id 創建一個新列。 下面是代碼,但不是為相似的 id 創建相同的 uuid,而是創建不同的 uuid。

 df_complete = pd.DataFrame([])
 for new_id in df['id'].unique():
    df_interim = df[df['id'] == new_id]
    df_interim['uuid'] = df_interim['id'].apply(lambda _: uuid.uuid4())
    df_complete.append(df_interim)

預期輸出:

 id   name   zip   uuid
 123  aaa    614   uuid_1
 123  nnn    615   uuid_1
 341  yun    318   uuid_2
 441  ros    911   uuid_3

任何線索或建議將不勝感激

您可以使用.groupby().transform()並在.transform()調用uuid函數,如下所示:

.transform()有助於為同一組(相同id )中的所有條目設置相同的值(uuid)。

df['uuid'] = df.groupby('id')['id'].transform(lambda _: uuid.uuid4())

結果:

print(df)


    id name  zip                                  uuid
0  123  aaa  614  e7d7c519-52e0-486f-99f2-722b73c16242
1  123  nnn  615  e7d7c519-52e0-486f-99f2-722b73c16242
2  341  yun  318  dc24c9d0-4c52-44ab-ac19-c6ce64fed5b7
3  441  ros  911  0a14dc45-cbe7-43aa-8b54-90ef88ca8a7e

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM