LoginSignup
15
5

More than 3 years have passed since last update.

pandasの単一値Seriesから値のみを取り出す & Series/DataFrameのデータをリストとして取得する

Posted at

単一値Seriesから値のみを取り出す

背景

DataFrameから特定のデータを絞ったとき、Series型になる。この生のデータが欲しい。

some_df = pd.DataFrame([[1.0,2.0],[3.0,4.0]], columns=['foo', 'bar'])
baz = some_df['foo'][:1]
print(baz)
# 0    1.0
# Name: foo, dtype: float64

たとえば、この数値1.0を取り出したい。

結論

以下で取得できる。

baz.iloc[-1]

備考・注意

baz.iloc[-1]は、"最後の1行を取り出す"というメソッドの呼び方だが、bazに複数Columnが含まれればSeries型として取り出され、単一Columnの場合は値になるので、これを利用している。

注意として、bazに複数indexが含まれる場合は最終行のみしか出力されないので、バグが入り込みうる。

some_df = pd.DataFrame([[1.0,2.0],[3.0,4.0]], columns=['foo', 'bar'])
baz = some_df['foo'][:2]
print(baz)
# 0    1.0
# 1    3.0
# Name: foo, dtype: float64

baz.iloc[-1]
# 3.0

Series/DataFrameのデータをリストとして取得する

背景

pandasの並んだデータ(Series/DataFrame)をリストにしたい時がある。

結論

baz.values.tolist()メソッドを使う。

Seriesの場合

some_df = pd.DataFrame([[1.0,2.0],[3.0,4.0]], columns=['foo', 'bar'])
baz = some_df['foo']
print(baz)
# 0    1.0
# 1    3.0
# Name: foo, dtype: float64
baz_list = baz.values.tolist()
print(baz_list)
# [1.0, 3.0]

DataFrameの場合

some_df = pd.DataFrame([[1.0,2.0],[3.0,4.0]], columns=['foo', 'bar'])
baz = some_df[:1]
print(baz)
#    foo  bar
# 0  1.0  2.0
baz_list = baz.values.tolist()
print(baz_list)
# [[1.0, 2.0]]

※Seriesは必ず1列だが、DataFrameはm行n列を格納できるので、1行のデータでも二重リストが出てくる!

備考

baz.valuesでnumpyのndarrayに変換できるので、ndarrayのtolist()メソッドを使っている。

15
5
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
15
5