Pandas:DataFrame操作


  • 強(qiáng)推Theodore Petrou的《Pandas Cookbook》(2017 Packt Publishing)以及pandas的官方手冊(cè)(pandas的官方文檔寫(xiě)的太棒了)

構(gòu)建DataFrame

  • df = pd.DataFrame(data, index=[], columns=[]): data是二維數(shù)組
  • 構(gòu)建多重index的df,如下:
>>> tuples = [('a', 'v1'), ('a', 'v2'), ('b', 'v1'), ('b', 'v2')]
>>> index = pd.MultiIndex.from_tuples(tuples)
>>> columns = ['c1', 'c2']
>>> values = np.arange(8).reshape(4, 2)
>>> df = pd.DataFrame(values, columns=columns, index=index)
>>> df
        c1  c2
a   v1   0   1
    v2   2   3
b   v1   4   5
    v2   6   7

選擇多列

  • df[col_names_list]: 直接通過(guò)列名稱(chēng)列表來(lái)選擇多列
  • df.select_dtypes(include=['int']): 選擇數(shù)據(jù)類(lèi)型是int的列
  • df.filter(like='str', regex='re'): 此方法只會(huì)檢查所有的column names,而不會(huì)檢查確切的數(shù)據(jù)
  • df[new_col_order_list]: 當(dāng)要對(duì)df中的列組織順序時(shí),可以直接用想要的列名序來(lái)index
  • (df + .00501)// .01: 可以將df中的數(shù)據(jù)全都四舍五入成1位小數(shù)
  • df.add(.00501).floordiv(.01): 和上面效果一樣
  • 注意:如下
In  [1]: .045 + .005
Out [1]: 0.049999999999999996

所以化成一位小數(shù)的時(shí)候多加了0.00001

  • df_1 == df_2:返回一個(gè)同shape的df,值全部為bool類(lèi)型,檢測(cè)對(duì)應(yīng)的數(shù)據(jù)是否相等
  • df.sort_values():

df.loc[]df.iloc[]用法集

1. df.loc[]詳解

注:以下i1 i2代表index_label,c1 c2代表column_name

  • df.loc['i1']: 返回一個(gè)Series,包含i1行的數(shù)據(jù)
  • df.loc[['i1', 'i2']]: 返回一個(gè)df,包含i1 i2兩行數(shù)據(jù)
  • df.loc['i1', 'c1']: 返回對(duì)應(yīng)位置的數(shù)據(jù)
  • df.loc['i1':'12', 'c1':'c2']: 返回一個(gè)df,包含對(duì)應(yīng)行和列的數(shù)據(jù)
  • df.loc[df['c1'] > 1]: 返回一個(gè)df,包含c1列中數(shù)值大于1的所有行
  • df.loc[df['c1'] > 1, ['c2']]: 返回一個(gè)df,包含上面返回df中的c2
  • df.loc[lambda df: df['c1'] == 1]: 返回一個(gè)df,包含c1列中數(shù)值等于1的所有行
  • df.loc[['i1', 'i2'], ['c1']] = 1: 將df中對(duì)應(yīng)位置的數(shù)據(jù)改為1
  • df.loc['i1'] = 1: 將對(duì)應(yīng)行的數(shù)據(jù)全部改為1
  • df.loc[:, 'c1'] = 1:將對(duì)應(yīng)列的數(shù)據(jù)全部改為1
  • df.loc[df['c1'] > 1] = 0: 將對(duì)應(yīng)列數(shù)據(jù)大于1的所有行的所有數(shù)據(jù)改為0
  • df.loc[1:9]: 返回1-9行的數(shù)據(jù)
  • 對(duì)于多重Index的df的操作到時(shí)用help(pd.DataFrame.loc)翻到最后看就是了

2. df.iloc[]詳解

  • iloc (integer-location)
  • df.loc[]一樣的功能,只是完全基于數(shù)字進(jìn)行索引,例如df.iloc[1:3, 1:3]就相當(dāng)于df.loc['i1':'i1', 'c1':'c3'],其他類(lèi)似
  • df.loc[]也能完全基于數(shù)字進(jìn)行索引

  • df.at['i1', 'c1']: 返回對(duì)應(yīng)位置的值
  • 'df.at['i1', 'c1'] = 1`: 將對(duì)應(yīng)位置的值設(shè)為1

Boolean Selection

  • df2 = df['c1'] > 1:
最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 選取某行某列 表名.loc['行名',['列名']] df.loc['2015-03-05',['volume']]
    papayaya閱讀 314評(píng)論 0 0
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類(lèi): pyspark.sql...
    mpro閱讀 9,932評(píng)論 0 13
  • pandas 數(shù)據(jù)索引與選取 我們對(duì) DataFrame 進(jìn)行選擇,大抵從這三個(gè)層次考慮:行列、區(qū)域、單元格。其對(duì)...
    周倜吉閱讀 51,694評(píng)論 1 13
  • 這個(gè)學(xué)期起初的時(shí)候?qū)σ恍〇|西有所了解過(guò),就跳過(guò)很多東西吧,把一些自己認(rèn)為重要的做出筆記,看了昨天的那東西,截圖搞得...
    六六的建斌閱讀 1,227評(píng)論 0 1
  • 文/知乎 我說(shuō)的是我的姐姐(親的),當(dāng)年她和提問(wèn)者的情況相似,入職場(chǎng)沒(méi)多久。 首先,我姐當(dāng)年是在華X公司工作,主要...
    Ailier閱讀 5,105評(píng)論 10 146

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