python 對(duì)DataFrame某列的部分(某些)元素賦值

首先創(chuàng)建一個(gè)DataFrame

>>> import pandas as pd
>>> df= pd.DataFrame({
    'brand': ['Yum Yum', 'Yum Yum', 'Indomie', 'Indomie', 'Yum Yum'],
    'style': ['cup', 'cup', 'cup', 'pack', 'pack'],
    'rating': [4, 4, 3.5, 15, 5]
})
>>> df
     brand style  rating
0  Yum Yum   cup     4.0
1  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Yum Yum  pack     5.0

來到賦值場(chǎng)景:

  • 需求:需要對(duì) rating 列的[0, 1, 4]行的3個(gè)元素賦值為[[5], [5], [4]], 也就是同時(shí)使用位置索引(positional indexing)和標(biāo)簽索引(label-based indexing)
  • 官方建議的操作為:
>>> import numpy as np
>>> df.loc[df.index[[0, 1, 4]], 'rating'] = np.array([5, 5, 4]).reshape((3, 1))
>>> df
     brand style  rating
0  Yum Yum   cup     5.0
1  Yum Yum   cup     5.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Yum Yum  pack     4.0
>>> #或者
>>> df.iloc[[0, 1, 4], df.columns.get_loc('rating')] = np.array([5, 5, 4]).reshape((3, 1))
>>> df
     brand style  rating
0  Yum Yum   cup     5.0
1  Yum Yum   cup     5.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Yum Yum  pack     4.0
>>>#或者
>>> df.iloc[df.index[[0, 1, 4]], df.columns.get_loc('rating')] = np.array([5, 5, 4]).reshape((3, 1))
>>> df
     brand style  rating
0  Yum Yum   cup     5.0
1  Yum Yum   cup     5.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Yum Yum  pack     4.0
>>>#或者,使用.get_indexer()可以同時(shí)索引多列如.get_indexer(['style', 'rating'])
>>> df.iloc[df.index[[0, 1, 4]], df.columns.get_indexer(['rating'])] = np.array([4, 4, 5]).reshape((3, 1))
>>> df
     brand style  rating
0  Yum Yum   cup     4.0
1  Yum Yum   cup     4.0
2  Indomie   cup     3.5
3  Indomie  pack    15.0
4  Yum Yum  pack     5.0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容