pandas 用 .loc[,]=value 篩選并原地賦值回原來的 DataFrame

環(huán)境

  • Anaconda notebook
  • Python 3.6
  • pandas 0.20.0

問題:
篩選出符合某些條件的行以后跷叉,對這些行里面的某一列進行數(shù)值修改時仆百,如果直接使用 data[篩選條件][某一列] = 值 會出現(xiàn)錯誤举畸,因為這是對切片拷貝進行操作箕别。因此和簸,需要使用 .loc[] 來解決篩選彭雾、并原地修改數(shù)值的問題。

1 準(zhǔn)備數(shù)據(jù)

把下列內(nèi)容填入 Sublime Text 等編輯器锁保,另存為 test.csv 文件薯酝。

id,sex,age
1,male,11
2,female,
3,female,31
4,male,21
5,male,

2 讀入數(shù)據(jù)

import pandas
data = pd.read_csv('test.csv')

查看讀入的數(shù)據(jù)

data

得到

id sex age
0 1 male 11.0
1 2 female NaN
2 3 female 31.0
3 4 male 21.0
4 5 male NaN

3 是否使用 .loc[] 的區(qū)別

假設(shè),我們需要篩選出所有的男性(sex=male)爽柒,并將其 id 改為 100吴菠。

3.1 沒有使用 .loc[] 的情況

如果我們沒有使用 .loc[],直接使用 [] 進行數(shù)據(jù)切片選擇浩村,并對其賦值做葵,就會產(chǎn)生錯誤。

# 設(shè)置篩選條件:選擇 sex 為 male 
mask = (data['sex']=='male')

# 查看篩選情況心墅,選出了 sex 為 male 的數(shù)據(jù)
data[mask]
id sex age
0 1 male 11.0
3 4 male 21.0
4 5 male NaN

對其賦值

data[mask]['id'] = 100

出現(xiàn)警告酿矢,稱切片僅僅是拷貝,不能對其賦值怎燥,需要 .loc[row_indexer,col_indexer] = value 賦值

/Users/mac/anaconda/lib/python3.6/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  """Entry point for launching an IPython kernel.

3.2 使用 .loc[,] 賦值瘫筐,成功

使用方法是

data.loc[篩選條件, 賦值列名] = 值

對 test.csv 操作:篩選出所有的男性(sex=male),并將其 id 改為 100铐姚。

# 設(shè)置篩選條件:選擇 sex 為 male 
mask = (data['sex']=='male')

# .loc[] 賦值
data.loc[mask, 'id'] = 100

結(jié)果:

id sex age
0 100 male 11.0
1 2 female NaN
2 3 female 31.0
3 100 male 21.0
4 100 male NaN
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末严肪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子谦屑,更是在濱河造成了極大的恐慌驳糯,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氢橙,死亡現(xiàn)場離奇詭異酝枢,居然都是意外死亡,警方通過查閱死者的電腦和手機悍手,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門帘睦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坦康,你說我怎么就攤上這事竣付。” “怎么了滞欠?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵古胆,是天一觀的道長。 經(jīng)常有香客問我,道長逸绎,這世上最難降的妖魔是什么惹恃? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮棺牧,結(jié)果婚禮上巫糙,老公的妹妹穿的比我還像新娘。我一直安慰自己颊乘,他們只是感情好参淹,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乏悄,像睡著了一般浙值。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纲爸,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天亥鸠,我揣著相機與錄音妆够,去河邊找鬼识啦。 笑死,一個胖子當(dāng)著我的面吹牛神妹,可吹牛的內(nèi)容都是我干的颓哮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鸵荠,長吁一口氣:“原來是場噩夢啊……” “哼冕茅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蛹找,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤姨伤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庸疾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乍楚,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年届慈,在試婚紗的時候發(fā)現(xiàn)自己被綠了徒溪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡金顿,死狀恐怖臊泌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揍拆,我是刑警寧澤渠概,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站嫂拴,受9級特大地震影響高氮,放射性物質(zhì)發(fā)生泄漏慧妄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一剪芍、第九天 我趴在偏房一處隱蔽的房頂上張望塞淹。 院中可真熱鬧,春花似錦罪裹、人聲如沸饱普。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽套耕。三九已至,卻和暖如春峡继,著一層夾襖步出監(jiān)牢的瞬間冯袍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工碾牌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留康愤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓舶吗,卻偏偏與公主長得像征冷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子誓琼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容