本文主要介紹pandas.DataFrame的三個接口,即assign、eval、query,分別用于賦值、查詢和執(zhí)行計算。
01 assign
在數(shù)據(jù)分析處理中,賦值產(chǎn)生新的列是非常高頻的應(yīng)用場景,簡單的可能是賦值常數(shù)列、復(fù)雜的可能是由一列產(chǎn)生另外一個一列,對于這種需求pandas有多種方法實現(xiàn),但個人唯獨喜歡assign,用起來優(yōu)雅高效。
例如,對于以上簡單的DataFrame數(shù)據(jù)框,需要創(chuàng)建一個新的列C,一般來說可能有3種創(chuàng)建需求:常數(shù)列、指定序列數(shù)據(jù)以及由已知列通過一定計算產(chǎn)生。那么應(yīng)用assign完成這3個需求分別是:
注意事項:
- assign賦值新列時,一般用新列名=表達式的形式,其中新列名為變量的形式,所以不加引號(加引號時意味著是字符串);
- assign返回創(chuàng)建了新列的dataframe,所以需要用新的dataframe對象接收返回值;
- assign不僅可用于創(chuàng)建新的列,也可用于更新已有列,此時創(chuàng)建的新列會覆蓋原有列。
02 eval
實際上,eval是一個Python基礎(chǔ)函數(shù),用于執(zhí)行字符串形式的計算表達式,例如以下簡單實例:
那么,eval作為pandas.dataframe數(shù)據(jù)結(jié)構(gòu)的一個接口,執(zhí)行功能應(yīng)該也與執(zhí)行計算有關(guān)。另一方面,pandas中實際上是內(nèi)置了大量的SQL類語法(包括下面要介紹的query也是),而eval的功能正是執(zhí)行類似SQL語法中的計算,對已知列執(zhí)行一定的計算時可用eval完成。例如,仍以前述由A和B列產(chǎn)生C列為例,應(yīng)用eval的方法為:
了解SQL語法的都知道可用@前綴修飾自定義變量,這一用法在這里的eval中也得以保留,此時可非常方便的引用外部變量。當(dāng)然,eval中的計算表達式本身屬于字符串形式,所以自然也可以用Python的通用字符串引用方法。如下圖所示。
注意事項:
- eval支持接收一個inplace參數(shù)控制原地創(chuàng)建新變量或者返回新的dataframe;也支持僅用表達式而不設(shè)置新變量名,此時返回數(shù)據(jù)為series格式,如下圖所示;
- eval表達式中也支持調(diào)用函數(shù)執(zhí)行復(fù)雜計算。
03 query
這應(yīng)該是最近使用最為頻繁的一個接口了,pandas中雖然也提供了多種數(shù)據(jù)篩選方式,例如loc中增加表達式、或者直接用df[df[]……]等等,但總覺得用起來不夠優(yōu)雅,尤其是要寫兩遍df以及[]等等,此時如果靈活運用query函數(shù),那么會便捷不少。尤其是query也是類似于SQL中where關(guān)鍵字的語法邏輯,用起來會很順滑。
例如對于以上dataframe,需要根據(jù)不同場景查詢滿足條件的記錄,調(diào)用query的實現(xiàn)方式為:
當(dāng)然,之所以說query中支持類似SQL的語法,是因為其也有兩個SQL中標(biāo)志性的設(shè)計,其一是@引用自定義外部變量,其二是對于特殊的列名(例如包含空格的字符)可以用反引號``加以修飾引用。例如,下述例子中C C列中有個空格,直接用于字符串表達式會存在報錯,此時可使用反引號加以修飾,同時查詢條件中應(yīng)用了@修飾符引用外部變量。當(dāng)然,與eval中類似,這里當(dāng)然也可以用f字符串修飾引用。
注意事項:
- query中也支持inplace參數(shù),控制是否將查詢過濾條件作用于dataframe本身;
- 與eval類似,query中也支持引用外部函數(shù)。
-
接口
+關(guān)注
關(guān)注
33文章
9000瀏覽量
153712 -
字符串
+關(guān)注
關(guān)注
1文章
590瀏覽量
22252 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4380瀏覽量
64844
發(fā)布評論請先 登錄
誰會用這三個函數(shù)啊(數(shù)學(xué)類的)
在PyODPS DataFrame自定義函數(shù)中使用pandas、scipy和scikit-learn
LabVIEW的三個實例資料免費下載

pandas的快速入門介紹

技嘉 RTX 3060 Ti:三個HDMI、三個DisplayPort、 8+6針輔助供電接口
從Excel到Python-最常用的36個Pandas函數(shù)
盤點Pandas的100個常用函數(shù)

解讀12 種 Numpy 和 Pandas 高效函數(shù)技巧
盤點66個Pandas函數(shù)合集

pandas中合并數(shù)據(jù)的5個函數(shù)

評論