はじめに
pandas.DataFrame(pd.DataFrame)に関するメモ.
DataFrameの初期化
# 空のDataFrame
df = pd.DataFrame(columns=[列名のリスト])
# csvファイルから取得
df = pd.read_csv([ファイルのパス])
df = pd.read_csv([ファイルのパス], names=[列名のリスト]) # ヘッダーなしの場合
df = pd.read_csv([ファイルのパス], sep=',') # 区切り文字を指定する場合
df = pd.read_csv([ファイルのパス], delim_whitespace=True) # 空白区切りの場合
df = pd.read_csv([ファイルのパス], comment='#') # コメント文を含む場合
参考:pandasでcsv/tsvファイル読み込み(read_csv, read_table)
DataFrameに辞書を追加
df = df.append([辞書], ignore_index=True)
リストのappend
と違い,df.append()
だけではDataFrameが更新されないことに注意.
DataFrameから要素を抽出
# 'a' 'b'
# 0 | 1 2
# 1 | 3 4
# 要素を取得
df.loc[0,'a'] # -> 1
# 行を取得
dist(df.loc[0,:]) # -> {'a':1, 'b':2}
# 列を取得
list(df.loc[:,'a']) # -> [1, 3]
参考:pandasで任意の位置の値を取得・変更するat, iat, loc, iloc
DataFrameから条件をみたす行を抽出
# 単純な条件
df = df[df['num']>0]
df = df[df['str']=='Yes']
df = df[df['str'].isin(['Yes', 'No'])] # 候補が複数ある場合
# 文字列に関する条件(欠損値NaNを含む場合は'na=False'をオプションに加える)
df = df[df['str'].str.startswith('Y')] # 先頭の文字列
df = df[df['str'].str.contains('e')] # 中に含む文字列
df = df[df['str'].str.endswith('s')] # 末尾の文字列
# 複数の条件
df = df[(df['num']>0) & (df['str']=='Yes')] # andの代わりに&
df = df[(df['num']>0) | (df['str']=='Yes')] # orの代わりに|
参考:pandas.DataFrameの行を条件で抽出するquery
その他
# 指定した列に従いソート
df = df.sort_values('a', ascending=True)
# インデックスの振り直し
df = df.reset_index(drop=True)
# DataFrameをcsvファイルに保存
df.to_csv([ファイルのパス], index=False)