Pythonでforループを使ってDataFrameを作成すると、異なる変数が全て同じ結果になる。
Pythonとpandasの以下のプログラムに関する質問です。
以下の6つの変数は異なる期間とデータを持つ、index が datetimeindex の Series です。
1~3の違いは期間が異なり、aとbはデータが異なります。
season_a1
season_b1
season_a2
season_b2
season_a3
season_b3
from pandas import DataFrame
import numpy as np
#結果を格納するDataFrame
result_df1 = DataFrame(index=np.arange(0, 24))
result_df2 = DataFrame(index=np.arange(0, 24))
result_df3 = DataFrame(index=np.arange(0, 24))
for year in range(2000, 2004):
if str(year) in season_b1.index:
a1 = season_a1[str(year)].index.hour.value_counts().sort_index()
b1 = season_b1[str(year)].index.hour.value_counts().sort_index()
result_df1['A' + str(year)] = a1
result_df1['B' + str(year)] = b1
# 1
if str(year) in season_b2.index:
a2 = season_a2[str(year)].index.hour.value_counts().sort_index()
b2 = season_b2[str(year)].index.hour.value_counts().sort_index()
result_df2['A' + str(year)] = a2
result_df2['B' + str(year)] = b2
# 2
if str(year) in season_b3.index:
a3 = season_a3[str(year)].index.hour.value_counts().sort_index()
b3 = season_b3[str(year)].index.hour.value_counts().sort_index()
result_df3['A' + str(year)] = a3
result_df3['B' + str(year)] = b3
# 3
result_df1.to_csv(path1)
result_df2.to_csv(path2)
result_df3.to_csv(path3)
単純にvalue_counts()で集計した結果の
a1, b1 は、 result_df1 に。
a2, b2 は、 result_df2 に。
a3, b3 は、 result_df3 に。
列として追加していき、 csvファイルとして出力するだけです。
欲しい結果としては、result_df1~3 の結果が全て異なるものになって欲しいのですが、
それぞれ元となるデータも変数名も異なるのに、
出力される結果が全て result_df3 の内容と同じになってしまいます。
確認として、# 1~3 の部分で result_df1~3 の内容を print() してみたのですが、
1回目のループの # 2 のところで既に result_df1 が result_df2 と同じになっていて
# 3 のところでは result_df1 , result_df2 も result_df3 と同じになっています。
初歩的なミスだとは思うのですが、解決できません。
申し訳ございませんが、よろしくお願いいたします。