pandas
Python3

pandas 困ったことまとめ

よく調べるので自分用にメモします


DataFrameで特定列の値がリストに含まれる行だけを抽出

import pandas as pd

df = pd.DataFrame({'N1': [1, 2, 3, 4, 5, 6],
'N2': [10, 20, 30, 40, 50, 60],
'N3': [6, 5, 4, 3, 2, 1]},
columns=['N1', 'N2', 'N3'])
df
# N1 N2 N3
# 0 1 10 6
# 1 2 20 5
# 2 3 30 4
# 3 4 40 3
# 4 5 50 2
# 5 6 60 1

pandas.DataFrame.isin(list)を使用してN1列の値のうちmaskに含まれる行だけを抽出

mask = [1, 3, 5]

df[df['N1'].isin(mask)]
# N1 N2 N3
# 0 1 10 6
# 2 3 30 4
# 4 5 50 2


DataFrameで条件に合う行に新しい列を追加する(条件に合わないところはNaN)

df.loc[条件, 新しい列の名前]=valueという風に代入していく

df.loc[df['N1']==1, 'N4']=1000

df
# N1 N2 N3 N4
# 0 1 10 6 1000.0
# 1 2 20 5 NaN
# 2 3 30 4 NaN
# 3 4 40 3 NaN
# 4 5 50 2 NaN
# 5 6 60 1 NaN