0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pd.DataFrameに関するあれこれ

Posted at

はじめに

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)
0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?