我有一個這樣的df:
| 卡薩 | 姓名 | 類_jfs | 類別 |
|---|---|---|---|
| Just_For_Sports | mochila reebok active | 配飾 | 摩奇拉 |
| Just_For_Sports | tubo lejopi de pelotas softee | 配飾 | 吐蕃 |
| Just_For_Sports | 媒體包 puma x2 | 配飾 | 盒 |
| Just_For_Sports | gorro adidas de natación 3 rayas | 配飾 | 民族 |
還有 27 個不同的串列,如下所示:
MODA=['mochila','wear', 'urban', 'pack']
TENIS=['tubo', 'raqueta','red']
NATACION=['natacion', 'pileta','tapon']
另一方面,我有一個空串列:
intermedia1=[]
這是我當前的腳本:
for element in df_JFS['Categoria']:
if element in VOLEY:
intermedia1.append('VOLEY')
elif element in UNIFORMES:
intermedia1.append('UNIFORMES')
elif element in TREKKING_OUTDOOR_ADVENTURE:
intermedia1.append('TREKKING_OUTDOOR_ADVENTURE')
elif element in TRAINING:
intermedia1.append('TRAINING')
elif element in TENIS:
intermedia1.append('TENIS')
elif element in SURF:
intermedia1.append('SURF')
elif element in SQUASH:
intermedia1.append('SQUASH')
elif element in SKATEBOARD:
intermedia1.append('SKATEBOARD')
elif element in RUNNING:
intermedia1.append('RUNNING')
elif element in RUGBY:
intermedia1.append('RUGBY')
elif element in PING_PONG:
intermedia1.append('PING_PONG')
elif element in PESAS:
intermedia1.append('PESAS')
elif element in PADDLE:
intermedia1.append('PADDLE')
elif element in NATACION:
intermedia1.append('NATACION')
elif element in MODA:
intermedia1.append('MODA')
elif element in INFANTIL:
intermedia1.append('INFANTIL')
elif element in HOCKEY:
intermedia1.append('HOCKEY')
elif element in HANDBALL:
intermedia1.append('HANDBALL')
elif element in GOLF:
intermedia1.append('GOLF')
elif element in FUTBOL:
intermedia1.append('FUTBOL')
elif element in FRONTON:
intermedia1.append('FRONTON')
elif element in CICLISMO:
intermedia1.append('CICLISMO')
elif element in BASQUET:
intermedia1.append('BASQUET')
elif element in BASICOS:
intermedia1.append('BASICOS')
elif element in BASEBALL_SOFTBALL:
intermedia1.append('BASEBALL_SOFTBALL')
elif element in ARTES_MARCIALES_Y_BOX:
intermedia1.append('ARTES_MARCIALES_Y_BOX')
elif element in AEROBICS_Y_FITNESS:
intermedia1.append('AEROBICS_Y_FITNESS')
else:
intermedia1.append('OTROS')
df_JFS['Categoria']=intermedia1
怎樣才能有效地完成?
輸出應如下所示:
| 卡薩 | 姓名 | 類_jfs | 類別 |
|---|---|---|---|
| Just_For_Sports | mochila reebok active | 配飾 | 莫達 |
| Just_For_Sports | tubo lejopi de pelotas softee | 配飾 | 網球 |
| Just_For_Sports | 媒體包 puma x2 | 配飾 | 莫達 |
| Just_For_Sports | gorro adidas de natación 3 rayas | 配飾 | 全國 |
df['Categoria'] 值,應該是找到單詞的串列的名稱
謝謝!
uj5u.com熱心網友回復:
我建議的方法很少
方法一
在串列中查找內容的復雜性是O(n). 它優化了您可以使用一組而不是O(1).
MODA = set(['mochila', 'wear', 'urban', 'pack'])
方法二
如果所有串列的所有值都是唯一的,則可以創建一個dict將值映射到鍵的值。您可以撰寫一個回圈來將值映射到鍵,結果應如下所示:
{
'mochila': "MODA",
'wear': "MODA",
'urban': "MODA",
'pack': "MODA",
...
}
uj5u.com熱心網友回復:
不確定時間效率,但如果您想防止樣板編碼,您可以使用apply函式以及其他一些步驟:
import pandas as pd
# Defining the lists of data(rest of the code)
# .
# .
myDict ={'MODA':MODA, "TENIS":TENIS, "NATACION":NATACION}
def search(valueToSearch):
for key, valuesList in myDict.items():
if valueToSearch in valuesList:
return key
return "Not Found"
df["Categoria"] = df["Categoria"].apply(search)
df
輸出
| 卡薩 | 姓名 | 類_jfs | 類別 | |
|---|---|---|---|---|
| 0 | Just_For_Sports | mochila reebok active | 配飾 | 莫達 |
| 1 | Just_For_Sports | tubo lejopi de pelotas softee | 配飾 | 網球 |
| 2 | Just_For_Sports | 媒體包 puma x2 | 配飾 | 莫達 |
| 3 | Just_For_Sports | gorro adidas de natación 3 rayas | 配飾 | 全國 |
請注意,您應該定義myDict如上所示。如果您有任何其他串列,您應該myDict以相同的方式在變數中定義它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/446326.html
上一篇:在R中存盤回圈導致資料幀
