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