文章目錄
對於列的操作
- 在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)
- concat
拼接很好用
df3 = pd.concat([df1, df2], ignore_index=True)
- 取特定的行
df = df[(df[col]1 == '') | ((df[col2] & df[col3]))]
這裏主要是要注意 | & 的用法,必須要加括號
- 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]))
- 在進行類似於drop_duplicates, drop 之類的帶有inplace參數的操作時,如果的確要修改原來的DataFrame,並且後續還要對DataFrame進行操作,那麼不要使用下面這種方式:
df = df.drop(col1, axis=1)
df[col2] = ... //操作df裏面的東西
最好使用inplace參數
df = df.drop(col1, axis=1, inplace=True)