酷帥吊炸天的 Pandas 常用操作命令彙總

Rachel發表於2019-08-03

非常慶幸自己在有意無意中學習了 Pandas 基礎,開始學的時候是覺得它很有意思,功能很強大。然鵝,除了做練習,並沒有實際應用。最近工作需要寫爬蟲,資料處理我就用了 Pandas, 這時才深深體會到其酷帥吊炸天的威力,一句話,只有我用不到的功能,沒有它不支援的功能,函式多到爆,每個函式又有辣麼多的引數可以用,感動到哭暈在廁所。。。。。。

所以除了之前整理的一些用法,我把這次工作中學到的新函式和用法整理如下:

檢視 dataframe 資訊,可以檢視每一列的具體資訊:

df.info()

刪除 NaN 所在的行:

刪除表中全部為 NaN 的行

df.dropna(axis=0,how='all')  

刪除表中含有任何 NaN 的行

df.dropna(axis=0,how='any') #drop all rows that have any NaN values

刪除NaN所在的列:

刪除表中全部為 NaN 的列

df.dropna(axis=1,how='all') 

刪除表中含有任何 NaN 的列

df.dropna(axis=1,how='any') #drop all rows that have any NaN values

去掉值不合適的行

首先把值改為 NaN, 注意,這裡需要先引入 numpy

df.content= df.content.replace({'<p></p>': np.NaN}, regex=True)

然後再把值有 NaN 的行刪掉

df = df.dropna(axis=0,how='any') 

刪除所有含有某個字元的行

df=df[ ~ df['price'].str.contains('-')] 

更改某一列字串的部分值

df.piclist= df.piclist.replace({'/uploads': 'http://www.zgmlxc.com.cn/uploads'}, regex=True)
df.head()

效果:
酷帥吊炸天的 Pandas 常用操作命令彙總

擷取字串的部分值

df["litpic"]= df["piclist"].str.split(",", n=0, expand = True)[0]

通過 str.split 函式將字串按逗號分隔,然後取其中第0列的值

修改某一列的資料型別

df[['price']] = df[['price']].astype(float)

模糊更改某一列中還有某個字元的值

df['kind'].loc[df['kind'].str.contains('蛋', na=False)] = 46

如上,是更改 kind 列中,把含有 "蛋” 的字元都改為 46,其中, na=False 參數列示忽略 NaN

明確批量更改某一列的值

df.category= df.category.replace({'禽畜肉蛋': 36, '水果':35, '糧油米麵': 6, '種子種苗':69, '苗木花草': 69, '農資農機': 54, '水產': 52, '蔬菜': 35}, regex=True)

合併列

## 先把列中的整數轉為字串
df['category'] = df['category'].map(lambda x:str(x))
df['kind'] = df['kind'].map(lambda x:str(x))
## 合併
df['attrid'] = df['category'].str.cat(df['kind'], sep=',')

資料篩選

必須同時滿足條件

outfile = df1[(df1[u'設計井別']=='11') & (df1[u'投產井別']=='11') &(df1[u'目前井別']=='11')]

滿足其一即可的篩選

outfile = df1[(df1[u'設計井別']=='11') | (df1[u'投產井別']=='11') | (df1[u'目前井別']=='11')]

刪除 appID 為 278 和 382,以及 appPlatform 為 2 的行

df[(True-df['appID'].isin([278,382]))&(True-df['appPlatform'].isin([2]))]

刪除 ‘成交金額’ 大於 1000 的行

df[df['成交金額'] > 10000]

相關文章