一些pandas的操作

文章目錄

對於列的操作

  1. 在groupby sum 之後最好要reset_index()
df1 = df.groupby([col1, col2]).sum()
df2 = df.groupby([col1, col2]).sum().reset_index(drop)
df1[col] += 'asdf'
df2[col] += 'asdf'

如果在df這張表很大的情況下,df1會花費很長的時間(我遇到的情況爲1-2s),而df2只會花費很短的時間(0.00x s)

  1. concat
    拼接很好用
df3 = pd.concat([df1, df2], ignore_index=True)
  1. 取特定的行
df = df[(df[col]1 == '') | ((df[col2] & df[col3]))]

這裏主要是要注意 | & 的用法,必須要加括號

  1. apply調用
對於兩列之間的操作:
df[[col1, col2]].apply(lambda x: x[0] op x[1])
例:
df['c'] = df[['a', 'b']].apply(lambda x: x[0] + x[1])

對於調用函數:
df.apply(lambda x: func(x[col1], x[col2], ...))
例:
def my_func(args_1, args_2)
df.apply(lambda x: my(x[col1], x[col2]))
  1. 在進行類似於drop_duplicates, drop 之類的帶有inplace參數的操作時,如果的確要修改原來的DataFrame,並且後續還要對DataFrame進行操作,那麼不要使用下面這種方式:
df = df.drop(col1, axis=1)
df[col2] = ...  //操作df裏面的東西

最好使用inplace參數

df = df.drop(col1, axis=1, inplace=True)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章