簡體   English   中英

如何為熊貓列中的唯一值創建行?

[英]How to create rows for unique values in columns in pandas?

我有一個包含數千行的 Pandas 數據框,如下所示:

IntentID     IntentName         Query           Response
1            Intent Name 1      Query 1         Response1
2            Intent Name 1      Query 1         Response2
3            Intent Name 2      Query 2         Response3
4            Intent Name 2      Query 2         Response4
5            Intent Name 3      Query 3         Response5

我需要“IntentName”中的所有唯一值都具有相同的 IntentID 值,如下所示:

IntentID     IntentName         Query           Response
1            Intent Name 1      Query 1         Response1
1            Intent Name 1      Query 1         Response2
2            Intent Name 2      Query 2         Response3
2            Intent Name 2      Query 2         Response4
3            Intent Name 3      Query 3         Response5

什么是最簡單的方法來做到這一點?

嘗試這個:

df['IntentID'] = df.groupby('IntentName') \
                    ['IntentID'].transform('first') \
                    .rank(method='dense') \
                    .astype('int')

這個怎么運作:

  • IntentName對行進行IntentName
  • 對於每個組,保留第一個IntentID
  • 對那些IntentID s 1, 1, 2, 2, 3 等進行排名( method=dense
  • 將等級轉換為 int

您可以使用正則表達式:

df['IntentID'] = df.IntentName.apply(lambda x: re.search('(?P<num>\d+)',x).groups()[0])

輸出

  IntentID     IntentName    Query   Response
0        1  Intent Name 1  Query 1  Response1
1        1  Intent Name 1  Query 1  Response2
2        2  Intent Name 2  Query 2  Response3
3        2  Intent Name 2  Query 2  Response4
4        3  Intent Name 3  Query 3  Response5

暫無
暫無

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

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