updated on 2019-09-24
pandasでデータフレームの行や列を削除する動作を行う。
python 3.7.3
pandas 0.25.1
>>> df=pd.DataFrame(np.arange(12).reshape(3, 4),columns=['A', 'B', 'C', 'D']) >>> df A B C D 0 0 1 2 3 1 4 5 6 7 2 8 9 10 11
>>> df.drop(['B', 'C'], axis=1) # axis: 0がインデックス(デフォルト) 1がカラム
A D
0 0 3
1 4 7
2 8 11
>>> df.drop(columns=['B', 'C']) A D 0 0 3 1 4 7 2 8 11
pythonでdel statementでも実現できる
>>> del df["B"] や >>> del (df["B"],df["C"])
のように使う
>>> df.drop([0, 1]) # インデックス0と1の行を削除 A B C D 2 8 9 10 11
>>> df = pd.DataFrame({'氏名': ['匿名', 'ジャイヤン', 'スネ夫', '匿名'], ... '性別': ['男', '男', '男', '女'], ... '恋人': ['しずか', '妹', 'ママ', 'のび太'], ... '性格': ['アホ', '横柄', 'ナルシスト', '良い子']}, ... index=[1, 2, 3, 4]) >>> df 氏名 性別 恋人 性格 1 匿名 男 しずか アホ 2 ジャイヤン 男 妹 横柄 3 スネ夫 男 ママ ナルシスト 4 匿名 女 のび太 良い子
氏名カラムに"匿名"が入っている行を全て削除する
df.drop(df.index[df['氏名'] == '匿名'], inplace=True) >>> df 氏名 性別 恋人 性格 2 ジャイヤン 男 妹 横柄 3 スネ夫 男 ママ ナルシスト >>>
>>> df = pd.DataFrame([ ... [1 , 2, None, None], ... [None, 1, 2, None], ... [None, None, None, None], ... ])
>>> df.dropna(how="all") 0 1 2 3 0 1.0 2.0 NaN NaN 1 NaN 1.0 2.0 NaN >>>
>>> df = pd.DataFrame([ ... [1 , 2, None, None], ... [None, 1, 2, None], ... [1, 3, 11, -3], ... ]) >>> df 0 1 2 3 0 1.0 2 NaN NaN 1 NaN 1 2.0 NaN 2 1.0 3 11.0 -3.0 >>> >>> df.dropna(how="any") 0 1 2 3 2 1.0 3 11.0 -3.0
>>> df = pd.DataFrame([[1,2,3],[4,5,6],[None,8,9],[10,None,12],[None,14.15]], columns=['A','B','C']) >>> df A B C 0 1.0 2.00 3.0 1 4.0 5.00 6.0 2 NaN 8.00 9.0 3 10.0 NaN 12.0 4 NaN 14.15 NaN >>> df.dropna(subset=['A'], inplace=True) # AカラムのNaNがある行を削除 >>> df A B C 0 1.0 2.0 3.0 1 4.0 5.0 6.0 3 10.0 NaN 12.0
df = pd.DataFrame([[1,2,3],[4,5,6],[None,8,9],[10,None,12],[None,14.15]], columns=['A','B','C']) >>> df A B C 0 1.0 2.00 3.0 1 4.0 5.00 6.0 2 NaN 8.00 9.0 3 10.0 NaN 12.0 4 NaN 14.15 NaN >>> df.dropna(subset=['A','B'], inplace=True) # AカラムとBカラムでNaNがある行を全て削除 >>> df A B C 0 1.0 2.0 3.0 1 4.0 5.0 6.0