第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用數(shù)據(jù)框中的現(xiàn)有列分配列值的問題

使用數(shù)據(jù)框中的現(xiàn)有列分配列值的問題

SMILET 2021-10-12 15:03:06
我正在嘗試在數(shù)據(jù)框中創(chuàng)建一個新列,該列根據(jù)另一列中的值分配值。我使用的代碼分配了值,但不是我想要的。我不確定我錯過了什么。代碼示例如下:#define track stylesshort = [4,6,8,9,11,20,24,28,30,33,35]inter = [2,3,7,12,13,17,19,25,27,32,34,36]long = [5,14,15,21,23,26]plate = [1,10,18,31]road = [16,22,29]#input driver and stat info    driver1 = input('Choose driver: ')#read driver data to dataframedf = pd.read_csv(driver1 + '_2018.csv')#add track typedf['Type'] = ''for i in range(len(df)):    if df['Race'][i] in short:        df['Type'][i] = 'short'    elif df['Race'][i] in inter:        df['Type'] = 'intermediate'    elif df['Race'][i] in long:        df['Type'] = 'long'    elif df['Race'][i] in plate:        df['Type'] = 'plate'    else:        df['Type'] = 'road'print(df.head())我得到以下輸出:C:\EclipseWorkspace\csse120\Personal\NASCAR_Projects\Other\driver_review.py:45: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrameSee the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy  df['Type'][i] = 'short'   Race  Start  Mid Race      ...       Total Laps  DRIVER RATING          Type0     1      5        23      ...              207          105.2  intermediate1     2     16         7      ...              325           94.2  intermediate2     3     10         2      ...              267          106.1  intermediate3     4      5        11      ...              311           80.0  intermediate4     5      6         3      ...              200          113.0  intermediate[5 rows x 20 columns]請注意,“類型”列返回所有“中間”,而它應(yīng)該包括 ['plate', 'intermediate', 'intermediate', 'short', 'long']。
查看完整描述

1 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗 獲得超7個贊

使用map和dictionary- 首先通過鍵中的新名稱和值中的列表創(chuàng)建字典,然后在字典理解中相互交換到平面字典:


d = {'short':short, 

     'intermediate':inter,

     'long':long,

     'plate':plate,

     'road':road}


d1 = {k: oldk for oldk, oldv in d.items() for k in oldv}

df['Type'] = df['Race'].map(d1)

print (df)

   Race  Start  Mid Race  Total Laps  DRIVER RATING          Type

0     1      5        23         207          105.2         plate

1     2     16         7         325           94.2  intermediate

2     3     10         2         267          106.1  intermediate

3     4      5        11         311           80.0         short

4     5      6         3         200          113.0          long

如果想要將前 4 個類別中不匹配的所有值設(shè)置為從第一個字典中road刪除road并添加fillna所有不匹配的值:


d = {'short':short, 

     'intermediate':inter,

     'long':long,

     'plate':plate}


d1 = {k: oldk for oldk, oldv in d.items() for k in oldv}

df['Type'] = df['Race'].map(d1).fillna('road')

詳情:


print (d1)


{

    4: 'short', 6: 'short',

    8: 'short', 9: 'short',

    11: 'short',    20: 'short',

    24: 'short',    28: 'short',

    30: 'short',    33: 'short',

    35: 'short',    2: 'intermediate',

    3: 'intermediate',  7: 'intermediate',

    12: 'intermediate', 13: 'intermediate',

    17: 'intermediate', 19: 'intermediate',

    25: 'intermediate', 27: 'intermediate',

    32: 'intermediate', 34: 'intermediate',

    36: 'intermediate', 5: 'long',

    14: 'long', 15: 'long',

    21: 'long', 23: 'long',

    26: 'long', 1: 'plate',

    10: 'plate',    18: 'plate',

    31: 'plate',    16: 'road',

    22: 'road', 29: 'road'

}


查看完整回答
反對 回復(fù) 2021-10-12
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號