【Pandas】pd.Seriesを全部同じ値で更新する方法

【Pandas】pd.Seriesを全部同じ値で更新する方法


# pandas # python

DataFrameのノリでやろうとしたら上手く行かずにちょっと詰まったのでメモです。

NG例

import numpy as np
import pandas as pd

series = pd.Series(np.random.rand(10))

series = 0
print(series)
# 0

DataFrameを経由する場合だと、

df['A'] = 1

のような形で指定できるので出来るんじゃないかなー、と思ったのですが駄目でした。

seriesという変数は、要素が全部0のpd.Seriesではなく、int 0が入っただけです(そりゃそう)。

ならばこうやる

じゃあどうするかと言うとこんな感じでやればOKです。

import numpy as np
import pandas as pd

series = pd.Series(np.random.rand(10))

series[:] = 0
# または
# series.loc[:] = 0
# series[...] = 0
print(series)

# 0     0
# 1     0
# ...
# 35    0
# 36    0
# dtype: int64

単純ですね。めでたしめでたし。

Seriesに限ったことなので、そんなに使うことは多くないと思うのですが、全部の値を初期化->一部の値だけ更新というようなことをする場合などは起きうると思うので覚えておいて損はない書き方です。